blob: 225576e06c6fa63c8edfeba20e6e83c9ae3b4228 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05302 * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
Kiet Lam1ed83fc2014-02-19 01:15:45 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
Kiet Lama7f454d2014-07-24 12:04:06 -070023 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
Kiet Lam1ed83fc2014-02-19 01:15:45 -080026 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028
Kiet Lama7f454d2014-07-24 12:04:06 -070029
30
Jeff Johnson295189b2012-06-20 16:38:30 -070031/*===========================================================================
32
33 W L A N _ Q C T _ W D I. C
34
35 OVERVIEW:
36
Jeff Johnsone7245742012-09-05 17:12:55 -070037 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070038 Layer Interface.
39
Jeff Johnsone7245742012-09-05 17:12:55 -070040 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070041 MAC implementation that wishes to use the WLAN Device.
42
43 DEPENDENCIES:
44
45 Are listed for each API below.
46
47
Jeff Johnson295189b2012-06-20 16:38:30 -070048===========================================================================*/
49
50/*===========================================================================
51
52 EDIT HISTORY FOR FILE
53
54
55 This section contains comments describing changes made to the module.
56 Notice that changes are listed in reverse chronological order.
57
58
59 $Header$$DateTime$$Author$
60
61
62 when who what, where, why
63---------- --- --------------------------------------------------------
6410/05/11 hap Adding support for Keep Alive
652010-08-09 lti Created module
66
67===========================================================================*/
68
69/*----------------------------------------------------------------------------
70 * Include Files
71 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070072#include "wlan_qct_wdi.h"
73#include "wlan_qct_wdi_i.h"
74#include "wlan_qct_wdi_sta.h"
75#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070076
Jeff Johnsone7245742012-09-05 17:12:55 -070077#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070078
79#include "wlan_qct_pal_api.h"
80#include "wlan_qct_pal_type.h"
81#include "wlan_qct_pal_status.h"
82#include "wlan_qct_pal_sync.h"
83#include "wlan_qct_pal_msg.h"
84#include "wlan_qct_pal_trace.h"
85#include "wlan_qct_pal_packet.h"
86
Jeff Johnsone7245742012-09-05 17:12:55 -070087#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070088
89#include "wlan_hal_msg.h"
90
Jeff Johnson295189b2012-06-20 16:38:30 -070091#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070092#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070093
Girish Gowli55caa852015-01-19 16:09:49 +053094#include "vos_api.h"
Girish Gowli55caa852015-01-19 16:09:49 +053095
Jeff Johnson295189b2012-06-20 16:38:30 -070096/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070097 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070098 ===========================================================================*/
99#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
102#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
103
Yue Mad8cac142013-03-28 11:33:46 -0700104#define FEATURE_NOT_SUPPORTED 127
Sachin Ahuja69bfa982015-04-24 17:02:57 +0530105#define MAX_FW_HOST_CAP_SIZE 1024
Jeff Johnson295189b2012-06-20 16:38:30 -0700106#ifdef FEATURE_WLAN_SCAN_PNO
107#define WDI_PNO_VERSION_MASK 0x8000
108#endif
109
110/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700111static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700112/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700113static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700114/* array of features supported. Need to add a new feature
115 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
116 */
117static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800118 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800119#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700120 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800121#else
122 ,FEATURE_NOT_SUPPORTED
123#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800124#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700125 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800126#else
127 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800128#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700129 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800130#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700131 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700135 ,FEATURE_NOT_SUPPORTED //9
136 ,FEATURE_NOT_SUPPORTED //10
137 ,FEATURE_NOT_SUPPORTED //11
138 ,FEATURE_NOT_SUPPORTED //12
139 ,FEATURE_NOT_SUPPORTED //13
140 ,FEATURE_NOT_SUPPORTED //14
141 ,FEATURE_NOT_SUPPORTED //15
142 ,FEATURE_NOT_SUPPORTED //16
143 ,FEATURE_NOT_SUPPORTED //17
144 ,FEATURE_NOT_SUPPORTED //18
145 ,FEATURE_NOT_SUPPORTED //19
146 ,FEATURE_NOT_SUPPORTED //20
147 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700148 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700149#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700150 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700151#else
152 ,FEATURE_NOT_SUPPORTED
153#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700154 ,FEATURE_NOT_SUPPORTED //24
155 ,FEATURE_NOT_SUPPORTED //25
156 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700157 ,FEATURE_NOT_SUPPORTED //27
158 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530159#ifdef FEATURE_WLAN_TDLS
160 ,ADVANCE_TDLS //29
161#else
162 ,FEATURE_NOT_SUPPORTED //29
163#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530164 ,FEATURE_NOT_SUPPORTED //30
165 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530166 ,EXTENDED_NSOFFLOAD_SLOT //32
167 ,CH_SWITCH_V1 //33
168 ,HT40_OBSS_SCAN //34
169 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530170 ,FEATURE_NOT_SUPPORTED //36
171 ,FEATURE_NOT_SUPPORTED //37
172 ,FEATURE_NOT_SUPPORTED //38
173#ifdef FEATURE_WLAN_TDLS
174 ,TDLS_SCAN_COEXISTENCE //39
175#else
176 ,FEATURE_NOT_SUPPORTED //39
177#endif
Dino Mycledf0a5d92014-07-04 09:41:55 +0530178#ifdef WLAN_FEATURE_LINK_LAYER_STATS
179 ,LINK_LAYER_STATS_MEAS //40
180#else
181 ,FEATURE_NOT_SUPPORTED //40
182#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +0530183 ,MU_MIMO //41
Dino Myclee8843b32014-07-04 14:21:45 +0530184#ifdef WLAN_FEATURE_EXTSCAN
185 ,EXTENDED_SCAN //42
186#else
187 ,FEATURE_NOT_SUPPORTED //42
188#endif
Mihir Shetec34258c2014-07-30 17:50:27 +0530189 ,DYNAMIC_WMM_PS //43
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800190
Siddharth Bhal171788a2014-09-29 21:02:40 +0530191 ,MAC_SPOOFED_SCAN //44
Sachin Ahuja825082e2014-11-25 17:34:36 +0530192 ,FEATURE_NOT_SUPPORTED //45
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530193 ,DISA //46
Abhishek Singh85b74712014-10-08 11:38:19 +0530194 ,FW_STATS //47
Sachin Ahuja825082e2014-11-25 17:34:36 +0530195 ,WPS_PRBRSP_TMPL //48
Abhishek Singh5fef4042014-11-25 18:33:00 +0530196 ,BCN_IE_FLT_DELTA //49
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +0530197 ,FEATURE_NOT_SUPPORTED //50
198#ifdef FEATURE_WLAN_TDLS
199 ,TDLS_OFF_CHANNEL //51
200#else
201 ,FEATURE_NOT_SUPPORTED //51
202#endif
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530203 ,FEATURE_NOT_SUPPORTED //52
204 ,MGMT_FRAME_LOGGING //53
Ganesh Kondabattinib18b3292015-03-16 16:59:26 +0530205 ,ENHANCED_TXBD_COMPLETION //54
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530206 ,LOGGING_ENHANCEMENT //55
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530207};
Jeff Johnson295189b2012-06-20 16:38:30 -0700208
209/*--------------------------------------------------------------------------
210 WLAN DAL State Machine
211 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700212WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700213{
214 /*WDI_INIT_ST*/
215 {{
216 WDI_MainStart, /*WDI_START_EVENT*/
217 NULL, /*WDI_STOP_EVENT*/
218 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
219 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
220 WDI_MainClose, /*WDI_CLOSE_EVENT*/
221 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
222 }},
223
224 /*WDI_STARTED_ST*/
225 {{
226 WDI_MainStartStarted, /*WDI_START_EVENT*/
227 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
228 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
229 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
230 NULL, /*WDI_CLOSE_EVENT*/
231 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
232 }},
233
234 /*WDI_STOPPED_ST*/
235 {{
236 WDI_MainStart, /*WDI_START_EVENT*/
237 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
238 NULL, /*WDI_REQUEST_EVENT*/
239 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
240 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700241 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700242 }},
243
244 /*WDI_BUSY_ST*/
245 {{
246 WDI_MainStartBusy, /*WDI_START_EVENT*/
247 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
248 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
249 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
250 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
251 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
252 }}
253};
254
Jeff Johnsone7245742012-09-05 17:12:55 -0700255/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700256 DAL Request Processing Array - the functions in this table will only be
257 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700258 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700259 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700260WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700261{
262 /*INIT*/
263 WDI_ProcessStartReq, /* WDI_START_REQ */
264 WDI_ProcessStopReq, /* WDI_STOP_REQ */
265 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
266
267 /*SCAN*/
268 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
269 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
270 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
271 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
272
273 /*ASSOCIATION*/
274 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
275 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
276 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
277 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
278 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
279
280 /* Security */
281 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
282 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
283 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
284 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
285
286 /* QoS and BA APIs */
287 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
288 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
289 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
290 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
291 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
292
293 /* Miscellaneous Control APIs */
294 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
295 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
296 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
297 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
298 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
299
300 /*BA APIs*/
301 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
302 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
303
304 /*Beacon processing APIs*/
305 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
306 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
307
308 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
309 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
310 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
311 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 /* PowerSave APIs */
314 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
315 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
316 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
317 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
318 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
319 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
320 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
321 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
322 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
323 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
324 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
325 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
326 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
327 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
328 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
329 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
330 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
331 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
332 /*NV Download APIs*/
333 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
334 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
335 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
336#ifdef WLAN_FEATURE_VOWIFI_11R
337 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
338#else
339 NULL,
340#endif /* WLAN_FEATURE_VOWIFI_11R */
341 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
342 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700343 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700344
345#ifdef FEATURE_OEM_DATA_SUPPORT
346 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
347#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700348 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700349#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700350 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700351
352 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700353
354#ifdef FEATURE_WLAN_SCAN_PNO
355 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
356 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
357 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
358#else
359 NULL,
360 NULL,
361 NULL,
362#endif /* FEATURE_WLAN_SCAN_PNO */
363
364 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700365
Jeff Johnson295189b2012-06-20 16:38:30 -0700366#ifdef WLAN_FEATURE_PACKET_FILTERING
367 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700368 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700369 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700370 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700371 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700372 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700373 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700374 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700375#else
376 NULL,
377 NULL,
378 NULL,
379 NULL,
380#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700381 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700382 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
383 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
384
385 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800386#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700387 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
388#else
389 NULL,
390#endif
391
392#ifdef WLAN_FEATURE_GTK_OFFLOAD
393 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
394 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
395#else
396 NULL,
397 NULL,
398#endif // WLAN_FEATURE_GTK_OFFLOAD
399
400 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
401 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700402#ifdef WLAN_FEATURE_11AC
403 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800404#else
405 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700406#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800407#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800408 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
409#else
schang86c22c42013-03-13 18:41:24 -0700410 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800411#endif
schang86c22c42013-03-13 18:41:24 -0700412 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700413#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700414 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700415#else
416 NULL,
417#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530418#ifdef FEATURE_WLAN_TDLS
419 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
420#else
421 NULL,
422#endif
Leo Chang9056f462013-08-01 19:21:11 -0700423#ifdef FEATURE_WLAN_LPHB
424 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
425#else
426 NULL,
427#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530428
429#ifdef FEATURE_WLAN_BATCH_SCAN
430 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
431#else
432 NULL,
433#endif /* FEATURE_WLAN_BATCH_SCAN */
434
Arif Hussaina5ebce02013-08-09 15:09:58 -0700435 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800436
437 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530438
439 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530440
441#ifdef WLAN_FEATURE_LINK_LAYER_STATS
442 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
443 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
444 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
445#else
446 NULL,
447 NULL,
448 NULL,
449#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530450#ifdef WLAN_FEATURE_EXTSCAN
451 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
452 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
453 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
454 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
455 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
456 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
457 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
458 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
459#else
460 NULL,
461 NULL,
462 NULL,
463 NULL,
464 NULL,
465 NULL,
466 NULL,
467 NULL,
468#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530469 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530470
471 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530472
473 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530474
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530475 WDI_ProcessFWLoggingInitReq, /* WDI_FW_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530476 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530477
478 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
479
Katya Nigamf0511f62015-05-05 16:40:57 +0530480 WDI_ProcessMonStartReq, /* WDI_MON_START_REQ */
481 WDI_ProcessMonStopReq, /* WDI_MON_STOP_REQ */
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530482 WDI_ProcessFatalEventLogsReq, /*WDI_FATAL_EVENT_LOGGING_REQ*/
schang86c22c42013-03-13 18:41:24 -0700483 /*-------------------------------------------------------------------------
484 Indications
485 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700486 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800487 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530488 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
489 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700490#ifdef WLAN_FEATURE_11W
491 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
492#else
493 NULL,
494#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700495 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
496 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530497#ifdef FEATURE_WLAN_BATCH_SCAN
498 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
499 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
500#else
501 NULL,
502 NULL,
503#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700504 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800505
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530506 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800507 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
508
509 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530510#ifdef FEATURE_WLAN_TDLS
511 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
512#else
513 NULL,
514#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530515 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530516 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700517};
518
519
Jeff Johnsone7245742012-09-05 17:12:55 -0700520/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700521 DAL Request Processing Array - the functions in this table will only be
522 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700523 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700524 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700525WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700526{
527 /*INIT*/
528 WDI_ProcessStartRsp, /* WDI_START_RESP */
529 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
530 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
531
532 /*SCAN*/
533 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
534 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
535 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
536 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
537
538 /* ASSOCIATION*/
539 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
540 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
541 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
542 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
543 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
544
545 /* Security */
546 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
547 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
548 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
549 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
550
551 /* QoS and BA APIs */
552 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
553 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
554 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
555 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
556 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
557
558 /* Miscellaneous Control APIs */
559 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
560 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
561 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
562 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
563 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
564
565 /* BA APIs*/
566 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
567 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700568
Jeff Johnson295189b2012-06-20 16:38:30 -0700569 /* IBSS APIs*/
570 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
571 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
572
573 /*Soft AP APIs*/
574 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
575 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
576 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
577 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
578
579 /* PowerSave APIs */
580 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
581 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
582 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
583 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
584 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
585 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
586 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
587 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
588 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
589 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
590 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
591 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
592 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
593 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
594 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
595 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
596 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
597 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700598
Jeff Johnson295189b2012-06-20 16:38:30 -0700599
600 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
601
602 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
603 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
604#ifdef WLAN_FEATURE_VOWIFI_11R
605 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
606#else
607 NULL,
608#endif /* WLAN_FEATURE_VOWIFI_11R */
609 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
610 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700611#ifdef FEATURE_OEM_DATA_SUPPORT
612 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
613#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700614 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700615#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700616 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
617
Jeff Johnson295189b2012-06-20 16:38:30 -0700618 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700619
Jeff Johnson295189b2012-06-20 16:38:30 -0700620 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700621
Jeff Johnsone7245742012-09-05 17:12:55 -0700622 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
623
Jeff Johnson295189b2012-06-20 16:38:30 -0700624#ifdef FEATURE_WLAN_SCAN_PNO
625 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
626 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
627 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
628#else
629 NULL,
630 NULL,
631 NULL,
632#endif // FEATURE_WLAN_SCAN_PNO
633
634 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700635 /*---------------------------------------------------------------------
636 Indications
637 ---------------------------------------------------------------------*/
638#ifdef WLAN_FEATURE_PACKET_FILTERING
639 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700640 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700641 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700642 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700643 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700644 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700645 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700646 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700647#else
648 NULL,
649 NULL,
650 NULL,
651 NULL,
652#endif // WLAN_FEATURE_PACKET_FILTERING
653
654 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
655 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
656
657 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800658#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700659 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
660#else
661 NULL,
662#endif
663
664#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700665 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
666 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700667#else
668 NULL,
669 NULL,
670#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700671 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
672 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700673#ifdef WLAN_FEATURE_11AC
674 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700675#else
676 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700677#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800678#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800679 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
680#else
681 NULL,
682#endif
schang86c22c42013-03-13 18:41:24 -0700683 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700684#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700685 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700686#else
687 NULL,
688#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530689#ifdef FEATURE_WLAN_TDLS
690 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
691#else
692 NULL,
693#endif
Leo Chang9056f462013-08-01 19:21:11 -0700694#ifdef FEATURE_WLAN_LPHB
695 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
696#else
697 NULL,
698#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530699
700#ifdef FEATURE_WLAN_BATCH_SCAN
701 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
702#else
703 NULL,
704#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800705 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530706
c_hpothu92367912014-05-01 15:18:17 +0530707 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800708
c_hpothu92367912014-05-01 15:18:17 +0530709 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
710
711 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800712
Sunil Duttbd736ed2014-05-26 21:19:41 +0530713
714#ifdef WLAN_FEATURE_LINK_LAYER_STATS
715 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
716 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
717 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
718#else
719 NULL,
720 NULL,
721 NULL,
722#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530723#ifdef WLAN_FEATURE_EXTSCAN
724 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
725 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
726 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
727 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
728 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
729 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
730 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
731 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
732#else
733 NULL,
734 NULL,
735 NULL,
736 NULL,
737 NULL,
738 NULL,
739 NULL,
740 NULL,
741#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530742 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530743
744 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530745
746 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530747 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530748 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530749
Srinivas Dasari32a79262015-02-19 13:04:49 +0530750 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
751
Katya Nigamf0511f62015-05-05 16:40:57 +0530752 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
753 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530754 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700755 /*---------------------------------------------------------------------
756 Indications
757 ---------------------------------------------------------------------*/
758 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
759 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
760 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
761 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
762 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
763 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
764
765 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
766
767 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
768
Jeff Johnson295189b2012-06-20 16:38:30 -0700769 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700770
771#ifdef FEATURE_WLAN_SCAN_PNO
772 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
773#else
774 NULL,
775#endif // FEATURE_WLAN_SCAN_PNO
776
777#ifdef WLAN_WAKEUP_EVENTS
778 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
779#else // WLAN_WAKEUP_EVENTS
780 NULL,
781#endif // WLAN_WAKEUP_EVENTS
782
783 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800784
Viral Modid86bde22012-12-10 13:09:21 -0800785 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530786#ifdef FEATURE_WLAN_TDLS
787 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
788#else
789 NULL,
790#endif
Leo Chang9056f462013-08-01 19:21:11 -0700791
792#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700793 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700794#else
795 NULL,
796#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700797
798 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700799
800 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530801
802#ifdef FEATURE_WLAN_BATCH_SCAN
803 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
804#else
805 NULL,
806#endif
807
Leo Chang0b0e45a2013-12-15 15:18:55 -0800808#ifdef FEATURE_WLAN_CH_AVOID
809 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
810#else
811 NULL,
812#endif /* FEATURE_WLAN_CH_AVOID */
813
Sunil Duttbd736ed2014-05-26 21:19:41 +0530814 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
815#ifdef WLAN_FEATURE_LINK_LAYER_STATS
816 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
817#else
818 NULL,
819#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530820#ifdef WLAN_FEATURE_EXTSCAN
821 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
822 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
823 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
824 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
825 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
826#else
827 NULL,
828 NULL,
829 NULL,
830 NULL,
831 NULL,
832#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530833#ifdef FEATURE_WLAN_TDLS
834 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
835#else
836 NULL,
837#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530838 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530839 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Jeff Johnson295189b2012-06-20 16:38:30 -0700840};
841
842
Jeff Johnsone7245742012-09-05 17:12:55 -0700843/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700844 WLAN DAL Global Control Block
845 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700846WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700847static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
848
Jeff Johnsone7245742012-09-05 17:12:55 -0700849const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700850
851/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700852WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700853void* WDI_GET_PAL_CTX( void )
854{
Jeff Johnsone7245742012-09-05 17:12:55 -0700855 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700856}/*WDI_GET_PAL_CTX*/
857
Jeff Johnsone7245742012-09-05 17:12:55 -0700858/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700859 Helper inline converters
860 ============================================================================*/
861/*Convert WDI driver type into HAL driver type*/
862WPT_STATIC WPT_INLINE WDI_Status
863WDI_HAL_2_WDI_STATUS
864(
865 eHalStatus halStatus
866);
867
868/*Convert WDI request type into HAL request type*/
869WPT_STATIC WPT_INLINE tHalHostMsgType
870WDI_2_HAL_REQ_TYPE
871(
872 WDI_RequestEnumType wdiReqType
873);
874
875/*Convert WDI response type into HAL response type*/
876WPT_STATIC WPT_INLINE WDI_ResponseEnumType
877HAL_2_WDI_RSP_TYPE
878(
879 tHalHostMsgType halMsg
880);
881
882/*Convert WDI driver type into HAL driver type*/
883WPT_STATIC WPT_INLINE tDriverType
884WDI_2_HAL_DRV_TYPE
885(
886 WDI_DriverType wdiDriverType
887);
888
889/*Convert WDI stop reason into HAL stop reason*/
890WPT_STATIC WPT_INLINE tHalStopType
891WDI_2_HAL_STOP_REASON
892(
893 WDI_StopType wdiStopType
894);
895
896/*Convert WDI scan mode type into HAL scan mode type*/
897WPT_STATIC WPT_INLINE eHalSysMode
898WDI_2_HAL_SCAN_MODE
899(
900 WDI_ScanMode wdiScanMode
901);
902
903/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700904WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700905WDI_2_HAL_SEC_CH_OFFSET
906(
907 WDI_HTSecondaryChannelOffset wdiSecChOffset
908);
909
910/*Convert WDI BSS type into HAL BSS type*/
911WPT_STATIC WPT_INLINE tSirBssType
912WDI_2_HAL_BSS_TYPE
913(
914 WDI_BssType wdiBSSType
915);
916
917/*Convert WDI NW type into HAL NW type*/
918WPT_STATIC WPT_INLINE tSirNwType
919WDI_2_HAL_NW_TYPE
920(
921 WDI_NwType wdiNWType
922);
923
924/*Convert WDI chanel bonding type into HAL cb type*/
925WPT_STATIC WPT_INLINE ePhyChanBondState
926WDI_2_HAL_CB_STATE
927(
928 WDI_PhyChanBondState wdiCbState
929);
930
931/*Convert WDI chanel bonding type into HAL cb type*/
932WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
933WDI_2_HAL_HT_OPER_MODE
934(
935 WDI_HTOperatingMode wdiHTOperMode
936);
937
938/*Convert WDI mimo PS type into HAL mimo PS type*/
939WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
940WDI_2_HAL_MIMO_PS
941(
942 WDI_HTMIMOPowerSaveState wdiHTOperMode
943);
944
945/*Convert WDI ENC type into HAL ENC type*/
946WPT_STATIC WPT_INLINE tAniEdType
947WDI_2_HAL_ENC_TYPE
948(
949 WDI_EncryptType wdiEncType
950);
951
952/*Convert WDI WEP type into HAL WEP type*/
953WPT_STATIC WPT_INLINE tAniWepType
954WDI_2_HAL_WEP_TYPE
955(
956 WDI_WepType wdiWEPType
957);
958
959/*Convert WDI Link State into HAL Link State*/
960WPT_STATIC WPT_INLINE tSirLinkState
961WDI_2_HAL_LINK_STATE
962(
963 WDI_LinkStateType wdiLinkState
964);
965
Jeff Johnsone7245742012-09-05 17:12:55 -0700966/*Translate a STA Context from WDI into HAL*/
967WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700968void
969WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700970(
Jeff Johnson295189b2012-06-20 16:38:30 -0700971 tConfigStaParams* phalConfigSta,
972 WDI_ConfigStaReqInfoType* pwdiConfigSta
973);
Jeff Johnsone7245742012-09-05 17:12:55 -0700974
975/*Translate a Rate set info from WDI into HAL*/
976WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700977WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700978(
Jeff Johnson295189b2012-06-20 16:38:30 -0700979 tSirMacRateSet* pHalRateSet,
980 WDI_RateSet* pwdiRateSet
981);
982
983/*Translate an EDCA Parameter Record from WDI into HAL*/
984WPT_STATIC WPT_INLINE void
985WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700986(
Jeff Johnson295189b2012-06-20 16:38:30 -0700987 tSirMacEdcaParamRecord* phalEdcaParam,
988 WDI_EdcaParamRecord* pWDIEdcaParam
989);
990
991/*Copy a management frame header from WDI fmt into HAL fmt*/
992WPT_STATIC WPT_INLINE void
993WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
994(
995 tSirMacMgmtHdr* pmacMgmtHdr,
996 WDI_MacMgmtHdr* pwdiMacMgmtHdr
997);
998
999/*Copy config bss parameters from WDI fmt into HAL fmt*/
1000WPT_STATIC WPT_INLINE void
1001WDI_CopyWDIConfigBSSToHALConfigBSS
1002(
1003 tConfigBssParams* phalConfigBSS,
1004 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1005);
1006
Jeff Johnsone7245742012-09-05 17:12:55 -07001007/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001008 pointed to by user data */
1009WPT_STATIC WPT_INLINE void
1010WDI_ExtractRequestCBFromEvent
1011(
1012 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001013 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001014 void** ppUserData
1015);
1016
1017wpt_uint8
1018WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001019(
Jeff Johnson295189b2012-06-20 16:38:30 -07001020 WDI_ControlBlockType* pWDICtx,
1021 WDI_BSSSessionType** ppSession
1022);
1023
1024void
1025WDI_AddBcastSTAtoSTATable
1026(
1027 WDI_ControlBlockType* pWDICtx,
1028 WDI_AddStaParams * staParams,
1029 wpt_uint16 usBcastStaIdx
1030);
1031
1032WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001033(
Jeff Johnson295189b2012-06-20 16:38:30 -07001034 WDI_ControlBlockType* pWDICtx,
1035 WDI_EventInfoType* pEventData
1036);
1037
1038void
1039WDI_SetPowerStateCb
1040(
1041 wpt_status status,
1042 unsigned int dxePhyAddr,
1043 void *pContext
1044);
1045
Jeff Johnson295189b2012-06-20 16:38:30 -07001046/**
1047 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001048
1049 @param wdiReqMsgId: WDI Message request Id
1050
1051 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001052 @return Result of the function call
1053*/
1054static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1055{
1056 switch (wdiReqMsgId)
1057 {
1058 CASE_RETURN_STRING( WDI_START_REQ );
1059 CASE_RETURN_STRING( WDI_STOP_REQ );
1060 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1061 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1062 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1063 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1064 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1065 CASE_RETURN_STRING( WDI_JOIN_REQ );
1066 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1067 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1068 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1069 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1070 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1071 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1072 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1073 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1074 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1075 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1076 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1077 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1078 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1079 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001080 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001081 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1082 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1083 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1084 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1085 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1086 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1087 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1088 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1089 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1090 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1091 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1092 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001093 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001094 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301095#ifdef FEATURE_WLAN_TDLS
1096 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301097 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301098#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001099 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1100 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1101 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1102 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1103 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1104 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1105 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1106 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1107 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1108 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1109 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1110 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1111 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1112 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1113 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1114 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1115 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1116 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1117 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1118 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1119 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1120 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1121 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1122 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1123 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001124 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001125 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1126 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1127 #ifdef FEATURE_WLAN_SCAN_PNO
1128 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1129 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1130 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1131 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001132#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001133 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001134#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001135 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1136 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1137 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1138 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1139 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1140 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1141 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1142 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1143 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301144 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001145 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001146 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001147#ifdef WLAN_FEATURE_11W
1148 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1149#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301150#ifdef FEATURE_WLAN_BATCH_SCAN
1151 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1152 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1153 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1154#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301155 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1156 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001157 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301158#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1159 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1160 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1161 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1162#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301163#ifdef WLAN_FEATURE_EXTSCAN
1164 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1165 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1166 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1167 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1168 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1169 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1170 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1171 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1172#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301173 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301174 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301175 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301176 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301177 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301178 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301179 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301180 CASE_RETURN_STRING( WDI_MON_START_REQ );
1181 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301182 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001183 default:
1184 return "Unknown WDI MessageId";
1185 }
1186}
1187
1188
1189
1190/**
1191 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001192
1193 @param wdiRespMsgId: WDI Message response Id
1194
1195 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001196 @return Result of the function call
1197*/
1198static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1199{
1200 switch (wdiRespMsgId)
1201 {
1202 CASE_RETURN_STRING( WDI_START_RESP );
1203 CASE_RETURN_STRING( WDI_STOP_RESP );
1204 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1205 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1206 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1207 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1208 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1209 CASE_RETURN_STRING( WDI_JOIN_RESP );
1210 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1211 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1212 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1213 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1214 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1215 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1216 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1217 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1218 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1219 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1220 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1221 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1222 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1223 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1224 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1225 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1226 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1227 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1228 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1229 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1230 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1231 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1232 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1233 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1234 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1235 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1236 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301237#ifdef FEATURE_WLAN_TDLS
1238 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301239 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301240 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1241#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001242 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1243 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1244 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1245 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1246 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1247 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1248 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1249 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1250 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1251 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1252 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1253 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1254 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1255 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1256 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1257 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1258 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1259 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1260 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1261 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1262 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1263 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1264 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1265 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1266 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001267 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001268 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1269 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1270 #ifdef FEATURE_WLAN_SCAN_PNO
1271 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1272 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1273 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1274 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001275#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001276 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001277#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001278 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1279 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1280 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1281 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1282 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1283 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1284 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1285 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001286 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301287#ifdef FEATURE_WLAN_BATCH_SCAN
1288 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1289#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001290 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301291 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301292 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301293#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1294 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1295 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1296 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1297#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301298#ifdef WLAN_FEATURE_EXTSCAN
1299 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1300 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1301 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1302 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1303 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1304 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1305 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1306 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1307 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1308 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1309 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1310 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1311 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1312
1313#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301314 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301315 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301316 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301317 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301318 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001319 default:
1320 return "Unknown WDI MessageId";
1321 }
1322}
1323
1324/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301325 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1326 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301327 @param capabilityBitmap - Base address of a 4 element Bitmap array
1328 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301329 @see
1330 @returns None
1331 */
1332void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1333{
Abhishek Singh08b60122014-02-04 18:05:23 +05301334 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301335 char *pTempCapStr = NULL;
1336 char *pCapStr = NULL;
1337 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1338 if (NULL == pTempCapStr)
1339 {
1340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1341 "Memory allocation failed for CapStr");
1342 return;
1343 }
1344
1345 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301346 for (j = 0; j < 4; j++) {
1347 for (i = 0; i < 32; i++) {
1348 if ((*(capabilityBitmap + j) & (1 << i))) {
1349 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301350 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1351 pCapStr += strlen("MCC");
1352 break;
1353 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1354 pCapStr += strlen("P2P");
1355 break;
1356 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1357 pCapStr += strlen("DOT11AC");
1358 break;
1359 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1360 pCapStr += strlen("SLM_SESSIONIZATION");
1361 break;
1362 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1363 pCapStr += strlen("DOT11AC_OPMODE");
1364 break;
1365 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1366 pCapStr += strlen("SAP32STA");
1367 break;
1368 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1369 pCapStr += strlen("TDLS");
1370 break;
1371 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1372 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1373 break;
1374 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1375 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1376 break;
1377 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1378 pCapStr += strlen("BEACON_OFFLOAD");
1379 break;
1380 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1381 pCapStr += strlen("SCAN_OFFLOAD");
1382 break;
1383 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1384 pCapStr += strlen("ROAM_OFFLOAD");
1385 break;
1386 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1387 pCapStr += strlen("BCN_MISS_OFFLOAD");
1388 break;
1389 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1390 pCapStr += strlen("STA_POWERSAVE");
1391 break;
1392 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1393 pCapStr += strlen("AP_UAPSD");
1394 break;
1395 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1396 pCapStr += strlen("AP_DFS");
1397 break;
1398 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1399 pCapStr += strlen("BLOCKACK");
1400 break;
1401 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1402 pCapStr += strlen("PHY_ERR");
1403 break;
1404 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1405 pCapStr += strlen("BCN_FILTER");
1406 break;
1407 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1408 pCapStr += strlen("RTT");
1409 break;
1410 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1411 pCapStr += strlen("RATECTRL");
1412 break;
1413 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1414 pCapStr += strlen("WOW");
1415 break;
1416 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1417 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1418 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301419 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1420 pCapStr += strlen("FW_IN_TX_PATH");
1421 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301422 case HT40_OBSS_SCAN:
1423 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1424 "%s", "HT40_OBSS_SCAN");
1425 pCapStr += strlen("HT40_OBSS_SCAN");
1426 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301427 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1428 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1429 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1430 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1431 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301432 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1433 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1434 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301435 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1436 pCapStr += strlen("CH_SWITCH_V1");
1437 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301438#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1439 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1440 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1441 break;
1442#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301443#ifdef WLAN_FEATURE_EXTSCAN
1444 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1445 pCapStr += strlen("EXTENDED_SCAN");
1446 break;
1447#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301448 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1449 pCapStr += strlen("MU_MIMO");
1450 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301451
Mihir Shetec34258c2014-07-30 17:50:27 +05301452 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1453 pCapStr += strlen("DYNAMIC_WMM_PS");
1454 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301455 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1456 pCapStr += strlen("FW_STATS");
1457 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301458 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1459 pCapStr += strlen("MAC_SPOOFED_SCAN");
1460 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301461 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1462 pCapStr += strlen("WPS_PRBRSP_TMPL");
1463 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301464 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1465 pCapStr += strlen("BCN_IE_FLT_DELTA");
1466 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301467 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1468 pCapStr += strlen("MGMT_FRAME_LOGGING");
1469 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301470 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1471 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1472 break;
1473
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301474 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1475 pCapStr += strlen("DISA");
1476 break;
1477
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301478 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1479 pCapStr += strlen("TDLS_OFF_CHANNEL");
1480 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301481 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1482 pCapStr += strlen("LOGGING_ENHANCEMENT");
1483 break;
1484
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301485
Abhishek Singh08b60122014-02-04 18:05:23 +05301486 }
1487 *pCapStr++ = ',';
1488 *pCapStr++ = ' ';
1489 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301490 }
1491 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301492 pCapStr -= 2;
1493 *pCapStr = '\0';
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pTempCapStr);
1495 if (pTempCapStr)
1496 {
1497 vos_mem_free(pTempCapStr);
1498 pTempCapStr = NULL;
1499 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301500}
1501
1502/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001504
1505 @param halStatusId: HAL status Id
1506
1507 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001508 @return Result of the function call
1509*/
1510static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1511{
1512 switch (halStatusId)
1513 {
1514 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1515 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1516 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1517 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1518 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1519 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1520 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1521 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1522 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1523 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1524 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1525 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1526 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1527 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1528 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1529 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1530 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1531 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1532 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1533 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1534 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1535 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1536 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1537 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1538 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1539 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1540 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1541 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1542 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1543 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1544 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1545 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1546 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1547 default:
1548 return "Unknown HAL status";
1549 }
1550}
1551
Jeff Johnsone7245742012-09-05 17:12:55 -07001552/*========================================================================
1553
Jeff Johnson295189b2012-06-20 16:38:30 -07001554 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001555
Jeff Johnson295189b2012-06-20 16:38:30 -07001556==========================================================================*/
1557
1558/**
1559 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001560
Jeff Johnson295189b2012-06-20 16:38:30 -07001561 DAL will allocate all the resources it needs. It will open PAL, it will also
1562 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001563 DXE/SMD or any other drivers that they need.
1564
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301565 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001566 ppWDIGlobalCtx: output pointer of Global Context
1567 pWdiDevCapability: output pointer of device capability
1568
1569 @return Result of the function call
1570*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001571WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001572WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001573(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301574 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001575 void** ppWDIGlobalCtx,
1576 WDI_DeviceCapabilityType* pWdiDevCapability,
1577 unsigned int driverType
1578)
1579{
1580 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001581 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001582 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001583 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1585
1586 /*---------------------------------------------------------------------
1587 Sanity check
1588 ---------------------------------------------------------------------*/
1589 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1590 {
1591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1592 "Invalid input parameters in WDI_Init");
1593
Jeff Johnsone7245742012-09-05 17:12:55 -07001594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001595 }
1596
1597 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001598 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001599 ---------------------------------------------------------------------*/
1600 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1601 {
1602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1603 "WDI module already initialized - return");
1604
Jeff Johnsone7245742012-09-05 17:12:55 -07001605 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001606 }
1607
1608 /*Module is now initialized - this flag is to ensure the fact that multiple
1609 init will not happen on WDI
1610 !! - potential race does exist because read and set are not atomic,
1611 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001612 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001613
1614 /*Setup the control block */
1615 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301616 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001617
1618 /*Setup the STA Table*/
1619 wdiStatus = WDI_STATableInit(&gWDICb);
1620 if ( WDI_STATUS_SUCCESS != wdiStatus )
1621 {
1622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1623 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001624 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001625 goto fail_STATableInit;
1626 }
1627
1628 /*------------------------------------------------------------------------
1629 Open the PAL
1630 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301631 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1633 {
1634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1635 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001636 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001637 goto fail_wpalOpen;
1638 }
1639
1640 /*Initialize main synchro mutex - it will be used to ensure integrity of
1641 the main WDI Control Block*/
1642 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1643 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1644 {
1645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1646 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001647 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001648 goto fail_mutex;
1649 }
1650
1651 /*Initialize the response timer - it will be used to time all messages
1652 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001653 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1654 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001655 &gWDICb);
1656 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1657 {
1658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1659 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001660 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 goto fail_timer;
1662 }
1663
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001664 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1665 WDI_SsrTimerCB,
1666 &gWDICb);
1667 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1668 {
1669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1670 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001671 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001672 goto fail_timer2;
1673 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001674 /* Initialize the WDI Pending Request Queue*/
1675 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1676 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1677 {
1678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1679 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001680 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 goto fail_pend_queue;
1682 }
1683
1684 /*Init WDI Pending Assoc Id Queue */
1685 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1686 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1687 {
1688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1689 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001690 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001691 goto fail_assoc_queue;
1692 }
1693
1694 /*Initialize the BSS sessions pending Queue */
1695 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1696 {
1697 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1698 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1699 {
1700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1701 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001702 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 goto fail_bss_queue;
1704 }
1705 }
1706
1707 /*Indicate the control block is sufficiently initialized for callbacks*/
1708 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1709
1710 /*------------------------------------------------------------------------
1711 Initialize the Data Path Utility Module
1712 ------------------------------------------------------------------------*/
1713 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1714 if ( WDI_STATUS_SUCCESS != wdiStatus )
1715 {
1716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1717 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001718 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001719 goto fail_dp_util_init;
1720 }
1721
1722 /* Init Set power state event */
1723 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001724 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001725 {
1726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1727 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001728 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001729 goto fail_power_event;
1730 }
1731
1732 /* Init WCTS action event */
1733 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001734 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001735 {
1736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1737 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001738 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001739 goto fail_wcts_event;
1740 }
1741
1742 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 ------------------------------------------------------------------------*/
1745 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1746 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001747 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001748 wctsCBs.wctsRxMsgCBData = &gWDICb;
1749
Jeff Johnsone7245742012-09-05 17:12:55 -07001750 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001751 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001752 WDI_CT_CHANNEL_SIZE,
1753 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001754
1755 if ( NULL == gWDICb.wctsHandle )
1756 {
1757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001758 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001759 goto fail_wcts_open;
1760 }
1761
1762 gWDICb.driverMode = (tDriverType)driverType;
1763 /* FTM mode not need to open Transport Driver */
1764 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001765 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 /*------------------------------------------------------------------------
1767 Open the Data Transport
1768 ------------------------------------------------------------------------*/
1769 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1770 {
1771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001772 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001773 goto fail_wdts_open;
1774 }
1775 }
1776
1777 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001778 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301779 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001780 /*Send the context as a ptr to the global WDI Control Block*/
1781 *ppWDIGlobalCtx = &gWDICb;
1782
1783 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001785 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1786 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1787 return WDI_STATUS_SUCCESS;
1788
1789 /* ERROR handlers
1790 Undo everything that completed successfully */
1791
1792 fail_wdts_open:
1793 {
1794 wpt_status eventStatus;
1795
1796 /* Closing WCTS in this scenario is tricky since it has to close
1797 the SMD channel and then we get notified asynchronously when
1798 the channel has been closed. So we take some of the logic from
1799 the "normal" close procedure in WDI_Close()
1800 */
1801
1802 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001803 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001804 {
1805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001806 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 }
1808
1809 WCTS_CloseTransport(gWDICb.wctsHandle);
1810
1811 /* Wait for WCTS to close the control transport. If we were able
1812 to reset the event flag, then we'll wait for the event,
1813 otherwise we'll wait for a maximum amount of time required for
1814 the channel to be closed */
1815 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1816 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001817 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001818 WDI_WCTS_ACTION_TIMEOUT);
1819 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1820 {
1821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001822 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001823 }
1824 }
1825 else
1826 {
1827 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1828 }
1829 }
1830 fail_wcts_open:
1831 wpalEventDelete(&gWDICb.wctsActionEvent);
1832 fail_wcts_event:
1833 wpalEventDelete(&gWDICb.setPowerStateEvent);
1834 fail_power_event:
1835 WDI_DP_UtilsExit(&gWDICb);
1836 fail_dp_util_init:
1837 gWDICb.magic = 0;
1838 fail_bss_queue:
1839 /* entries 0 thru i-1 were successfully initialized */
1840 while (0 < i)
1841 {
1842 i--;
1843 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1844 }
1845 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1846 fail_assoc_queue:
1847 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1848 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001849 wpalTimerDelete(&gWDICb.ssrTimer);
1850 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001851 wpalTimerDelete(&gWDICb.wptResponseTimer);
1852 fail_timer:
1853 wpalMutexDelete(&gWDICb.wptMutex);
1854 fail_mutex:
1855 wpalClose(gWDICb.pPALContext);
1856 fail_wpalOpen:
1857 WDI_STATableClose(&gWDICb);
1858 fail_STATableInit:
1859 gWDIInitialized = eWLAN_PAL_FALSE;
1860
1861 return WDI_STATUS_E_FAILURE;
1862
1863}/*WDI_Init*/;
1864
1865/**
1866 @brief WDI_Start will be called when the upper MAC is ready to
1867 commence operation with the WLAN Device. Upon the call
1868 of this API the WLAN DAL will pack and send a HAL Start
1869 message to the lower RIVA sub-system if the SMD channel
1870 has been fully opened and the RIVA subsystem is up.
1871
1872 If the RIVA sub-system is not yet up and running DAL
1873 will queue the request for Open and will wait for the
1874 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001875 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001876
1877 WDI_Init must have been called.
1878
Jeff Johnsone7245742012-09-05 17:12:55 -07001879 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001880 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001881
Jeff Johnson295189b2012-06-20 16:38:30 -07001882 wdiStartRspCb: callback for passing back the response of
1883 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001884
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001886 callback
1887
Jeff Johnson295189b2012-06-20 16:38:30 -07001888 @see WDI_Start
1889 @return Result of the function call
1890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001892WDI_Start
1893(
1894 WDI_StartReqParamsType* pwdiStartParams,
1895 WDI_StartRspCb wdiStartRspCb,
1896 void* pUserData
1897)
1898{
1899 WDI_EventInfoType wdiEventData;
1900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1901
1902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001904 ------------------------------------------------------------------------*/
1905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1906 {
1907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1908 "WDI API call before module is initialized - Fail request");
1909
Jeff Johnsone7245742012-09-05 17:12:55 -07001910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001911 }
1912
1913 /*------------------------------------------------------------------------
1914 Fill in Event data and post to the Main FSM
1915 ------------------------------------------------------------------------*/
1916 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001917 wdiEventData.pEventData = pwdiStartParams;
1918 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1919 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001920 wdiEventData.pUserData = pUserData;
1921
1922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1923
1924}/*WDI_Start*/
1925
1926/**
1927 @brief WDI_Stop will be called when the upper MAC is ready to
1928 stop any operation with the WLAN Device. Upon the call
1929 of this API the WLAN DAL will pack and send a HAL Stop
1930 message to the lower RIVA sub-system if the DAL Core is
1931 in started state.
1932
1933 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001934
1935 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001936
1937 WDI_Start must have been called.
1938
Jeff Johnsone7245742012-09-05 17:12:55 -07001939 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001940 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001941
Jeff Johnson295189b2012-06-20 16:38:30 -07001942 wdiStopRspCb: callback for passing back the response of
1943 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001944
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001946 callback
1947
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 @see WDI_Start
1949 @return Result of the function call
1950*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001951WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001952WDI_Stop
1953(
1954 WDI_StopReqParamsType* pwdiStopParams,
1955 WDI_StopRspCb wdiStopRspCb,
1956 void* pUserData
1957)
1958{
1959 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001960 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1962
1963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001964 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001965 ------------------------------------------------------------------------*/
1966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1967 {
1968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1969 "WDI API call before module is initialized - Fail request");
1970
Jeff Johnsone7245742012-09-05 17:12:55 -07001971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 }
1973
Jeff Johnson43971f52012-07-17 12:26:56 -07001974 /*Access to the global state must be locked before cleaning */
1975 wpalMutexAcquire(&pWDICtx->wptMutex);
1976
1977 /*Clear all pending request*/
1978 WDI_ClearPendingRequests(pWDICtx);
1979
1980 /*We have completed cleaning unlock now*/
1981 wpalMutexRelease(&pWDICtx->wptMutex);
1982
Jeff Johnson295189b2012-06-20 16:38:30 -07001983 /* Free the global variables */
1984 wpalMemoryFree(gpHostWlanFeatCaps);
1985 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001986 gpHostWlanFeatCaps = NULL;
1987 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001988
1989 /*------------------------------------------------------------------------
1990 Fill in Event data and post to the Main FSM
1991 ------------------------------------------------------------------------*/
1992 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001993 wdiEventData.pEventData = pwdiStopParams;
1994 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1995 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 wdiEventData.pUserData = pUserData;
1997
1998 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1999
2000}/*WDI_Stop*/
2001
2002
2003
2004/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002005 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002006 needs to interact with DAL. DAL will free its control
2007 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002008
2009 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002010
2011 WDI_Stop must have been called.
2012
2013 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002014
Jeff Johnson295189b2012-06-20 16:38:30 -07002015 @see WDI_Stop
2016 @return Result of the function call
2017*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002018WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002019WDI_Close
2020(
2021 void
2022)
2023{
2024 wpt_uint8 i;
2025 WDI_EventInfoType wdiEventData;
2026 wpt_status wptStatus;
2027 wpt_status eventStatus;
2028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2029
2030 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002032 ------------------------------------------------------------------------*/
2033 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2034 {
2035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2036 "WDI API call before module is initialized - Fail request");
2037
Jeff Johnsone7245742012-09-05 17:12:55 -07002038 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002039 }
2040
2041 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2042 (the control transport will be closed by the FSM and we'll want
2043 to wait until that completes)*/
2044 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002045 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 {
2047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002048 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002049 /* fall through and try to finish closing via the FSM */
2050 }
2051
2052 /*------------------------------------------------------------------------
2053 Fill in Event data and post to the Main FSM
2054 ------------------------------------------------------------------------*/
2055 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002056 wdiEventData.pEventData = NULL;
2057 wdiEventData.uEventDataSize = 0;
2058 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002059 wdiEventData.pUserData = NULL;
2060
2061 gWDIInitialized = eWLAN_PAL_FALSE;
2062
2063 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2064
2065 /*Wait for WCTS to close the control transport
2066 (but only if we were able to reset the event flag*/
2067 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2068 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002069 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002070 WDI_WCTS_ACTION_TIMEOUT);
2071 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2072 {
2073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002074 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002075 }
2076 }
2077
2078 /* Destroy the WCTS action event */
2079 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2080 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2081 {
2082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2083 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002084 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002085 }
2086
2087 /* Destroy the Set Power State event */
2088 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2089 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2090 {
2091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2092 "WDI Close failed to destroy an event");
2093
Jeff Johnsone7245742012-09-05 17:12:55 -07002094 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 }
2096
2097 /*------------------------------------------------------------------------
2098 Closes the Data Path Utility Module
2099 ------------------------------------------------------------------------*/
2100 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2101 {
2102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2103 "WDI Init failed to close the DP Util Module");
2104
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 }
2107
2108 /*destroy the BSS sessions pending Queue */
2109 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2110 {
2111 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2112 }
2113
2114 /* destroy the WDI Pending Assoc Id Request Queue*/
2115 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2116
2117 /* destroy the WDI Pending Request Queue*/
2118 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002119
Jeff Johnson295189b2012-06-20 16:38:30 -07002120 /*destroy the response timer */
2121 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2122
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002123 /*destroy the SSR timer */
2124 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2125
Jeff Johnson295189b2012-06-20 16:38:30 -07002126 /*invalidate the main synchro mutex */
2127 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2128 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2129 {
2130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2131 "Failed to delete mutex %d", wptStatus);
2132 WDI_ASSERT(0);
2133 }
2134
2135 /*Clear control block. note that this will clear the "magic"
2136 which will inhibit all asynchronous callbacks*/
2137 WDI_CleanCB(&gWDICb);
2138
2139 return wptStatus;
2140
2141}/*WDI_Close*/
2142
2143/**
2144 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2145 This will do most of the WDI stop & close
2146 operations without doing any handshake with Riva
2147
2148 This will also make sure that the control transport
2149 will NOT be closed.
2150
2151 This request will not be queued.
2152
2153
2154 WDI_Start must have been called.
2155
2156 @param closeTransport: Close control channel if this is set
2157
2158 @return Result of the function call
2159*/
2160WDI_Status
2161WDI_Shutdown
2162(
2163 wpt_boolean closeTransport
2164)
2165{
2166 WDI_EventInfoType wdiEventData;
2167 wpt_status wptStatus;
2168 int i = 0;
2169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2170
2171 /*------------------------------------------------------------------------
2172 Sanity Check
2173 ------------------------------------------------------------------------*/
2174 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2175 {
2176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2177 "WDI API call before module is initialized - Fail request");
2178
2179 return WDI_STATUS_E_NOT_ALLOWED;
2180 }
2181
2182 /*------------------------------------------------------------------------
2183 Fill in Event data and post to the Main FSM
2184 ------------------------------------------------------------------------*/
2185 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2186 wdiEventData.pEventData = NULL;
2187 wdiEventData.uEventDataSize = 0;
2188
2189 /* Shutdown will not be queued, if the state is busy timer will be
2190 * stopped & this message will be processed.*/
2191 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2192 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2193 {
2194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002195 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 }
2197 /* Destroy the Set Power State event */
2198 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2199 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2200 {
2201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2202 "WDI Close failed to destroy an event");
2203
2204 WDI_ASSERT(0);
2205 }
2206 /*------------------------------------------------------------------------
2207 Closes the Data Path Utility Module
2208 ------------------------------------------------------------------------*/
2209 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2210 {
2211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2212 "WDI Init failed to close the DP Util Module");
2213
2214 WDI_ASSERT(0);
2215 }
2216 if ( closeTransport )
2217 {
2218 /* Close control transport, called from module unload */
2219 WCTS_CloseTransport(gWDICb.wctsHandle);
2220 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002221 else
2222 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002223 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002224 the pending messages in the transport queue */
2225 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2226 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 /*destroy the BSS sessions pending Queue */
2228 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2229 {
2230 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2231 }
2232
2233 /* destroy the WDI Pending Assoc Id Request Queue*/
2234 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2235 /* destroy the WDI Pending Request Queue*/
2236 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2237 /*destroy the response timer */
2238 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002239 /*destroy the SSR timer */
2240 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002241
2242 /*invalidate the main synchro mutex */
2243 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2244 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2245 {
2246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002247 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002248 WDI_ASSERT(0);
2249 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002250 /* Free the global variables */
2251 wpalMemoryFree(gpHostWlanFeatCaps);
2252 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002253 gpHostWlanFeatCaps = NULL;
2254 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002255 /*Clear control block. note that this will clear the "magic"
2256 which will inhibit all asynchronous callbacks*/
2257 WDI_CleanCB(&gWDICb);
2258 return wptStatus;
2259
2260}/*WDI_Shutdown*/
2261
2262
Jeff Johnsone7245742012-09-05 17:12:55 -07002263/*========================================================================
2264
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002266
Jeff Johnson295189b2012-06-20 16:38:30 -07002267==========================================================================*/
2268
2269/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002270 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002271 the WLAN Device to get ready for a scan procedure. Upon
2272 the call of this API the WLAN DAL will pack and send a
2273 HAL Init Scan request message to the lower RIVA
2274 sub-system if DAL is in state STARTED.
2275
2276 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002277 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002278
2279 WDI_Start must have been called.
2280
2281 @param wdiInitScanParams: the init scan parameters as specified
2282 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002283
Jeff Johnson295189b2012-06-20 16:38:30 -07002284 wdiInitScanRspCb: callback for passing back the response
2285 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002286
Jeff Johnson295189b2012-06-20 16:38:30 -07002287 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002288 callback
2289
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 @see WDI_Start
2291 @return Result of the function call
2292*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002293WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002294WDI_InitScanReq
2295(
2296 WDI_InitScanReqParamsType* pwdiInitScanParams,
2297 WDI_InitScanRspCb wdiInitScanRspCb,
2298 void* pUserData
2299)
2300{
2301 WDI_EventInfoType wdiEventData;
2302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2303
2304 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002305 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002306 ------------------------------------------------------------------------*/
2307 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2308 {
2309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2310 "WDI API call before module is initialized - Fail request");
2311
Jeff Johnsone7245742012-09-05 17:12:55 -07002312 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002313 }
2314
2315 /*------------------------------------------------------------------------
2316 Fill in Event data and post to the Main FSM
2317 ------------------------------------------------------------------------*/
2318 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002319 wdiEventData.pEventData = pwdiInitScanParams;
2320 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2321 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002322 wdiEventData.pUserData = pUserData;
2323
2324 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2325
2326}/*WDI_InitScanReq*/
2327
2328/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002329 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002330 wishes to change the Scan channel on the WLAN Device.
2331 Upon the call of this API the WLAN DAL will pack and
2332 send a HAL Start Scan request message to the lower RIVA
2333 sub-system if DAL is in state STARTED.
2334
2335 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002337
2338 WDI_InitScanReq must have been called.
2339
Jeff Johnsone7245742012-09-05 17:12:55 -07002340 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002341 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002342
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 wdiStartScanRspCb: callback for passing back the
2344 response of the start scan operation received from the
2345 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002346
Jeff Johnson295189b2012-06-20 16:38:30 -07002347 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 callback
2349
Jeff Johnson295189b2012-06-20 16:38:30 -07002350 @see WDI_InitScanReq
2351 @return Result of the function call
2352*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002353WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002354WDI_StartScanReq
2355(
2356 WDI_StartScanReqParamsType* pwdiStartScanParams,
2357 WDI_StartScanRspCb wdiStartScanRspCb,
2358 void* pUserData
2359)
2360{
2361 WDI_EventInfoType wdiEventData;
2362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2363
2364 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002366 ------------------------------------------------------------------------*/
2367 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2368 {
2369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2370 "WDI API call before module is initialized - Fail request");
2371
Jeff Johnsone7245742012-09-05 17:12:55 -07002372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 }
2374
2375 /*------------------------------------------------------------------------
2376 Fill in Event data and post to the Main FSM
2377 ------------------------------------------------------------------------*/
2378 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002379 wdiEventData.pEventData = pwdiStartScanParams;
2380 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2381 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002382 wdiEventData.pUserData = pUserData;
2383
2384 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2385
2386}/*WDI_StartScanReq*/
2387
2388
2389/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002390 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002391 wants to end scanning for a particular channel that it
2392 had set before by calling Scan Start on the WLAN Device.
2393 Upon the call of this API the WLAN DAL will pack and
2394 send a HAL End Scan request message to the lower RIVA
2395 sub-system if DAL is in state STARTED.
2396
2397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002399
2400 WDI_StartScanReq must have been called.
2401
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002404
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 wdiEndScanRspCb: callback for passing back the response
2406 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002407
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002409 callback
2410
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 @see WDI_StartScanReq
2412 @return Result of the function call
2413*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002414WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002415WDI_EndScanReq
2416(
2417 WDI_EndScanReqParamsType* pwdiEndScanParams,
2418 WDI_EndScanRspCb wdiEndScanRspCb,
2419 void* pUserData
2420)
2421{
2422 WDI_EventInfoType wdiEventData;
2423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2424
2425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002426 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002427 ------------------------------------------------------------------------*/
2428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2429 {
2430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2431 "WDI API call before module is initialized - Fail request");
2432
Jeff Johnsone7245742012-09-05 17:12:55 -07002433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002434 }
2435
2436 /*------------------------------------------------------------------------
2437 Fill in Event data and post to the Main FSM
2438 ------------------------------------------------------------------------*/
2439 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002440 wdiEventData.pEventData = pwdiEndScanParams;
2441 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2442 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002443 wdiEventData.pUserData = pUserData;
2444
2445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2446
2447}/*WDI_EndScanReq*/
2448
2449
2450/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002451 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 completed the scan process on the WLAN Device. Upon the
2453 call of this API the WLAN DAL will pack and send a HAL
2454 Finish Scan Request request message to the lower RIVA
2455 sub-system if DAL is in state STARTED.
2456
2457 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002459
2460 WDI_InitScanReq must have been called.
2461
Jeff Johnsone7245742012-09-05 17:12:55 -07002462 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002463 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 wdiFinishScanRspCb: callback for passing back the
2466 response of the finish scan operation received from the
2467 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002468
Jeff Johnson295189b2012-06-20 16:38:30 -07002469 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002470 callback
2471
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 @see WDI_InitScanReq
2473 @return Result of the function call
2474*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002475WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002476WDI_FinishScanReq
2477(
2478 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2479 WDI_FinishScanRspCb wdiFinishScanRspCb,
2480 void* pUserData
2481)
2482{
2483 WDI_EventInfoType wdiEventData;
2484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2485
2486 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002487 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002488 ------------------------------------------------------------------------*/
2489 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2490 {
2491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2492 "WDI API call before module is initialized - Fail request");
2493
Jeff Johnsone7245742012-09-05 17:12:55 -07002494 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002495 }
2496
2497 /*------------------------------------------------------------------------
2498 Fill in Event data and post to the Main FSM
2499 ------------------------------------------------------------------------*/
2500 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002501 wdiEventData.pEventData = pwdiFinishScanParams;
2502 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2503 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002504 wdiEventData.pUserData = pUserData;
2505
2506 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2507
2508}/*WDI_FinishScanReq*/
2509
Jeff Johnsone7245742012-09-05 17:12:55 -07002510/*========================================================================
2511
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002513
Jeff Johnson295189b2012-06-20 16:38:30 -07002514==========================================================================*/
2515
2516/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002517 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002518 to start an association procedure to a BSS. Upon the
2519 call of this API the WLAN DAL will pack and send a HAL
2520 Join request message to the lower RIVA sub-system if
2521 DAL is in state STARTED.
2522
2523 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002524 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002525
2526 WDI_Start must have been called.
2527
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002530
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 wdiJoinRspCb: callback for passing back the response of
2532 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002533
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002535 callback
2536
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 @see WDI_Start
2538 @return Result of the function call
2539*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002541WDI_JoinReq
2542(
2543 WDI_JoinReqParamsType* pwdiJoinParams,
2544 WDI_JoinRspCb wdiJoinRspCb,
2545 void* pUserData
2546)
2547{
2548 WDI_EventInfoType wdiEventData;
2549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2550
2551 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002552 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 ------------------------------------------------------------------------*/
2554 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2555 {
2556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2557 "WDI API call before module is initialized - Fail request");
2558
Jeff Johnsone7245742012-09-05 17:12:55 -07002559 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 }
2561
2562 /*------------------------------------------------------------------------
2563 Fill in Event data and post to the Main FSM
2564 ------------------------------------------------------------------------*/
2565 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002566 wdiEventData.pEventData = pwdiJoinParams;
2567 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2568 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002569 wdiEventData.pUserData = pUserData;
2570
2571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2572
2573}/*WDI_JoinReq*/
2574
2575/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002576 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002577 wishes to configure the newly acquired or in process of
2578 being acquired BSS to the HW . Upon the call of this API
2579 the WLAN DAL will pack and send a HAL Config BSS request
2580 message to the lower RIVA sub-system if DAL is in state
2581 STARTED.
2582
2583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002585
2586 WDI_JoinReq must have been called.
2587
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002589 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 wdiConfigBSSRspCb: callback for passing back the
2592 response of the config BSS operation received from the
2593 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002594
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002596 callback
2597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 @see WDI_JoinReq
2599 @return Result of the function call
2600*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002602WDI_ConfigBSSReq
2603(
2604 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2605 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2606 void* pUserData
2607)
2608{
2609 WDI_EventInfoType wdiEventData;
2610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2611
2612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002614 ------------------------------------------------------------------------*/
2615 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2616 {
2617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2618 "WDI API call before module is initialized - Fail request");
2619
Jeff Johnsone7245742012-09-05 17:12:55 -07002620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002621 }
2622
2623 /*------------------------------------------------------------------------
2624 Fill in Event data and post to the Main FSM
2625 ------------------------------------------------------------------------*/
2626 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002627 wdiEventData.pEventData = pwdiConfigBSSParams;
2628 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2629 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 wdiEventData.pUserData = pUserData;
2631
2632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2633
2634}/*WDI_ConfigBSSReq*/
2635
2636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002638 disassociating from the BSS and wishes to notify HW.
2639 Upon the call of this API the WLAN DAL will pack and
2640 send a HAL Del BSS request message to the lower RIVA
2641 sub-system if DAL is in state STARTED.
2642
2643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002645
2646 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2647
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002650
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 wdiDelBSSRspCb: callback for passing back the response
2652 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002653
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 callback
2656
2657 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002658 @return Result of the function call
2659*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002661WDI_DelBSSReq
2662(
2663 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2664 WDI_DelBSSRspCb wdiDelBSSRspCb,
2665 void* pUserData
2666)
2667{
2668 WDI_EventInfoType wdiEventData;
2669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2670
2671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 ------------------------------------------------------------------------*/
2674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2675 {
2676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2677 "WDI API call before module is initialized - Fail request");
2678
Jeff Johnsone7245742012-09-05 17:12:55 -07002679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 }
2681
2682 /*------------------------------------------------------------------------
2683 Fill in Event data and post to the Main FSM
2684 ------------------------------------------------------------------------*/
2685 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 wdiEventData.pEventData = pwdiDelBSSParams;
2687 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2688 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002689 wdiEventData.pUserData = pUserData;
2690
2691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2692
2693}/*WDI_DelBSSReq*/
2694
2695/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002696 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 associated to a BSS and wishes to configure HW for
2698 associated state. Upon the call of this API the WLAN DAL
2699 will pack and send a HAL Post Assoc request message to
2700 the lower RIVA sub-system if DAL is in state STARTED.
2701
2702 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002704
2705 WDI_JoinReq must have been called.
2706
2707 @param wdiPostAssocReqParams: the assoc parameters as specified
2708 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002709
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 wdiPostAssocRspCb: callback for passing back the
2711 response of the post assoc operation received from the
2712 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002713
Jeff Johnson295189b2012-06-20 16:38:30 -07002714 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002715 callback
2716
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 @see WDI_JoinReq
2718 @return Result of the function call
2719*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002721WDI_PostAssocReq
2722(
2723 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2724 WDI_PostAssocRspCb wdiPostAssocRspCb,
2725 void* pUserData
2726)
2727{
2728 WDI_EventInfoType wdiEventData;
2729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2730
2731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002733 ------------------------------------------------------------------------*/
2734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2735 {
2736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2737 "WDI API call before module is initialized - Fail request");
2738
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 }
2741
2742 /*------------------------------------------------------------------------
2743 Fill in Event data and post to the Main FSM
2744 ------------------------------------------------------------------------*/
2745 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002746 wdiEventData.pEventData = pwdiPostAssocReqParams;
2747 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2748 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002749 wdiEventData.pUserData = pUserData;
2750
2751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2752
2753}/*WDI_PostAssocReq*/
2754
2755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 association with another STA has ended and the station
2758 must be deleted from HW. Upon the call of this API the
2759 WLAN DAL will pack and send a HAL Del STA request
2760 message to the lower RIVA sub-system if DAL is in state
2761 STARTED.
2762
2763 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002764 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002765
2766 WDI_PostAssocReq must have been called.
2767
Jeff Johnsone7245742012-09-05 17:12:55 -07002768 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002769 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002770
Jeff Johnson295189b2012-06-20 16:38:30 -07002771 wdiDelSTARspCb: callback for passing back the response
2772 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002773
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002775 callback
2776
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 @see WDI_PostAssocReq
2778 @return Result of the function call
2779*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002780WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002781WDI_DelSTAReq
2782(
2783 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2784 WDI_DelSTARspCb wdiDelSTARspCb,
2785 void* pUserData
2786)
2787{
2788 WDI_EventInfoType wdiEventData;
2789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2790
2791 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002792 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 ------------------------------------------------------------------------*/
2794 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2795 {
2796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2797 "WDI API call before module is initialized - Fail request");
2798
Jeff Johnsone7245742012-09-05 17:12:55 -07002799 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002800 }
2801
2802 /*------------------------------------------------------------------------
2803 Fill in Event data and post to the Main FSM
2804 ------------------------------------------------------------------------*/
2805 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002806 wdiEventData.pEventData = pwdiDelSTAParams;
2807 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2808 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002809 wdiEventData.pUserData = pUserData;
2810
2811 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2812
2813}/*WDI_DelSTAReq*/
2814
Jeff Johnsone7245742012-09-05 17:12:55 -07002815/*========================================================================
2816
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002818
Jeff Johnson295189b2012-06-20 16:38:30 -07002819==========================================================================*/
2820
2821/**
2822 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2823 install a BSS encryption key on the HW. Upon the call of this
2824 API the WLAN DAL will pack and send a Set BSS Key request
2825 message to the lower RIVA sub-system if DAL is in state
2826 STARTED.
2827
2828 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002829 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002830
2831 WDI_PostAssocReq must have been called.
2832
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002835
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 wdiSetBSSKeyRspCb: callback for passing back the
2837 response of the set BSS Key operation received from the
2838 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002839
Jeff Johnson295189b2012-06-20 16:38:30 -07002840 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002841 callback
2842
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 @see WDI_PostAssocReq
2844 @return Result of the function call
2845*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002846WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002847WDI_SetBSSKeyReq
2848(
2849 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2850 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2851 void* pUserData
2852)
2853{
2854 WDI_EventInfoType wdiEventData;
2855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2856
2857 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 ------------------------------------------------------------------------*/
2860 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2861 {
2862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2863 "WDI API call before module is initialized - Fail request");
2864
Jeff Johnsone7245742012-09-05 17:12:55 -07002865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002866 }
2867
2868 /*------------------------------------------------------------------------
2869 Fill in Event data and post to the Main FSM
2870 ------------------------------------------------------------------------*/
2871 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002872 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2873 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2874 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002875 wdiEventData.pUserData = pUserData;
2876
2877 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2878
2879}/*WDI_SetBSSKeyReq*/
2880
2881/**
2882 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2883 uninstall a BSS key from HW. Upon the call of this API the
2884 WLAN DAL will pack and send a HAL Remove BSS Key request
2885 message to the lower RIVA sub-system if DAL is in state
2886 STARTED.
2887
2888 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002889 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002890
2891 WDI_SetBSSKeyReq must have been called.
2892
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002895
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 wdiRemoveBSSKeyRspCb: callback for passing back the
2897 response of the remove BSS key operation received from
2898 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002899
Jeff Johnson295189b2012-06-20 16:38:30 -07002900 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002901 callback
2902
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 @see WDI_SetBSSKeyReq
2904 @return Result of the function call
2905*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002906WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002907WDI_RemoveBSSKeyReq
2908(
2909 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2910 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2911 void* pUserData
2912)
2913{
2914 WDI_EventInfoType wdiEventData;
2915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2916
2917 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002918 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002919 ------------------------------------------------------------------------*/
2920 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2921 {
2922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2923 "WDI API call before module is initialized - Fail request");
2924
Jeff Johnsone7245742012-09-05 17:12:55 -07002925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002926 }
2927
2928 /*------------------------------------------------------------------------
2929 Fill in Event data and post to the Main FSM
2930 ------------------------------------------------------------------------*/
2931 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002932 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2933 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2934 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002935 wdiEventData.pUserData = pUserData;
2936
2937 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2938
2939}/*WDI_RemoveBSSKeyReq*/
2940
2941
2942/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002943 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002944 ready to install a STA(ast) encryption key in HW. Upon
2945 the call of this API the WLAN DAL will pack and send a
2946 HAL Set STA Key request message to the lower RIVA
2947 sub-system if DAL is in state STARTED.
2948
2949 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002950 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002951
2952 WDI_PostAssocReq must have been called.
2953
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002955 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002956
Jeff Johnson295189b2012-06-20 16:38:30 -07002957 wdiSetSTAKeyRspCb: callback for passing back the
2958 response of the set STA key operation received from the
2959 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002960
Jeff Johnson295189b2012-06-20 16:38:30 -07002961 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002962 callback
2963
Jeff Johnson295189b2012-06-20 16:38:30 -07002964 @see WDI_PostAssocReq
2965 @return Result of the function call
2966*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002967WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002968WDI_SetSTAKeyReq
2969(
2970 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2971 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2972 void* pUserData
2973)
2974{
2975 WDI_EventInfoType wdiEventData;
2976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2977
2978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002980 ------------------------------------------------------------------------*/
2981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2982 {
2983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2984 "WDI API call before module is initialized - Fail request");
2985
Jeff Johnsone7245742012-09-05 17:12:55 -07002986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 }
2988
2989 /*------------------------------------------------------------------------
2990 Fill in Event data and post to the Main FSM
2991 ------------------------------------------------------------------------*/
2992 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002993 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2994 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2995 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002996 wdiEventData.pUserData = pUserData;
2997
2998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2999
3000}/*WDI_SetSTAKeyReq*/
3001
3002
3003/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003004 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003005 wants to uninstall a previously set STA key in HW. Upon
3006 the call of this API the WLAN DAL will pack and send a
3007 HAL Remove STA Key request message to the lower RIVA
3008 sub-system if DAL is in state STARTED.
3009
3010 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003011 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003012
3013 WDI_SetSTAKeyReq must have been called.
3014
Jeff Johnsone7245742012-09-05 17:12:55 -07003015 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003016 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003017
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 wdiRemoveSTAKeyRspCb: callback for passing back the
3019 response of the remove STA key operation received from
3020 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003021
Jeff Johnson295189b2012-06-20 16:38:30 -07003022 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003023 callback
3024
Jeff Johnson295189b2012-06-20 16:38:30 -07003025 @see WDI_SetSTAKeyReq
3026 @return Result of the function call
3027*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003029WDI_RemoveSTAKeyReq
3030(
3031 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3032 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3033 void* pUserData
3034)
3035{
3036 WDI_EventInfoType wdiEventData;
3037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3038
3039 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003040 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003041 ------------------------------------------------------------------------*/
3042 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3043 {
3044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3045 "WDI API call before module is initialized - Fail request");
3046
Jeff Johnsone7245742012-09-05 17:12:55 -07003047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 }
3049
3050 /*------------------------------------------------------------------------
3051 Fill in Event data and post to the Main FSM
3052 ------------------------------------------------------------------------*/
3053 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003054 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3055 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3056 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003057 wdiEventData.pUserData = pUserData;
3058
3059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3060
3061}/*WDI_RemoveSTAKeyReq*/
3062
3063
3064/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003065 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003066 wants to install a STA Bcast encryption key on the HW.
3067 Upon the call of this API the WLAN DAL will pack and
3068 send a HAL Start request message to the lower RIVA
3069 sub-system if DAL is in state STARTED.
3070
3071 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003073
3074 WDI_PostAssocReq must have been called.
3075
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003077 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003078
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 wdiSetSTABcastKeyRspCb: callback for passing back the
3080 response of the set BSS Key operation received from the
3081 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003082
Jeff Johnson295189b2012-06-20 16:38:30 -07003083 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003084 callback
3085
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 @see WDI_PostAssocReq
3087 @return Result of the function call
3088*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003089WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003090WDI_SetSTABcastKeyReq
3091(
3092 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3093 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3094 void* pUserData
3095)
3096
3097{
3098 WDI_EventInfoType wdiEventData;
3099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3100
3101 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003102 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003103 ------------------------------------------------------------------------*/
3104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3105 {
3106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3107 "WDI API call before module is initialized - Fail request");
3108
Jeff Johnsone7245742012-09-05 17:12:55 -07003109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003110 }
3111
3112 /*------------------------------------------------------------------------
3113 Fill in Event data and post to the Main FSM
3114 ------------------------------------------------------------------------*/
3115 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003116 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3117 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3118 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003119 wdiEventData.pUserData = pUserData;
3120
3121 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3122
3123}/*WDI_SetSTABcastKeyReq*/
3124
3125/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003126 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 MAC wants to uninstall a STA Bcast key from HW. Upon the
3128 call of this API the WLAN DAL will pack and send a HAL
3129 Remove STA Bcast Key request message to the lower RIVA
3130 sub-system if DAL is in state STARTED.
3131
3132 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003133 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003134
3135 WDI_SetSTABcastKeyReq must have been called.
3136
Jeff Johnsone7245742012-09-05 17:12:55 -07003137 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003138 parameters as specified by the Device
3139 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003140
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3142 response of the remove STA Bcast key operation received
3143 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003144
Jeff Johnson295189b2012-06-20 16:38:30 -07003145 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003146 callback
3147
Jeff Johnson295189b2012-06-20 16:38:30 -07003148 @see WDI_SetSTABcastKeyReq
3149 @return Result of the function call
3150*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003151WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003152WDI_RemoveSTABcastKeyReq
3153(
3154 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3155 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3156 void* pUserData
3157)
3158{
3159 WDI_EventInfoType wdiEventData;
3160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3161
3162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003164 ------------------------------------------------------------------------*/
3165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3166 {
3167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3168 "WDI API call before module is initialized - Fail request");
3169
Jeff Johnsone7245742012-09-05 17:12:55 -07003170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003171 }
3172
3173 /*------------------------------------------------------------------------
3174 Fill in Event data and post to the Main FSM
3175 ------------------------------------------------------------------------*/
3176 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003177 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3178 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3179 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 wdiEventData.pUserData = pUserData;
3181
3182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3183
3184}/*WDI_RemoveSTABcastKeyReq*/
3185
3186/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003187 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003188 MAC wants to set Max Tx Power to HW. Upon the
3189 call of this API the WLAN DAL will pack and send a HAL
3190 Remove STA Bcast Key request message to the lower RIVA
3191 sub-system if DAL is in state STARTED.
3192
3193 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003195
3196 WDI_SetSTABcastKeyReq must have been called.
3197
Jeff Johnsone7245742012-09-05 17:12:55 -07003198 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003199 parameters as specified by the Device
3200 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003201
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3203 response of the remove STA Bcast key operation received
3204 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003205
Jeff Johnson295189b2012-06-20 16:38:30 -07003206 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003207 callback
3208
Jeff Johnson295189b2012-06-20 16:38:30 -07003209 @see WDI_SetMaxTxPowerReq
3210 @return Result of the function call
3211*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003212WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003213WDI_SetMaxTxPowerReq
3214(
3215 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3216 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3217 void* pUserData
3218)
3219{
3220 WDI_EventInfoType wdiEventData;
3221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3222
3223 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003224 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003225 ------------------------------------------------------------------------*/
3226 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3227 {
3228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3229 "WDI API call before module is initialized - Fail request");
3230
Jeff Johnsone7245742012-09-05 17:12:55 -07003231 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003232 }
3233
3234 /*------------------------------------------------------------------------
3235 Fill in Event data and post to the Main FSM
3236 ------------------------------------------------------------------------*/
3237 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003238 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3239 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3240 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003241 wdiEventData.pUserData = pUserData;
3242
3243 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3244}
3245
schang86c22c42013-03-13 18:41:24 -07003246/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003247 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3248 MAC wants to set Max Tx Power to HW for specific band.
3249
3250 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3251
3252 wdiReqStatusCb: callback for passing back the
3253 response msg from the device
3254
3255 pUserData: user data will be passed back with the
3256 callback
3257
3258 @see WDI_SetMaxTxPowerPerBandReq
3259 @return Result of the function call
3260*/
3261WDI_Status
3262WDI_SetMaxTxPowerPerBandReq
3263(
3264 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3265 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3266 void* pUserData
3267)
3268{
3269 WDI_EventInfoType wdiEventData;
3270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3271
3272 /*------------------------------------------------------------------------
3273 Sanity Check
3274 ------------------------------------------------------------------------*/
3275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3276 {
3277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3278 "WDI API call before module is initialized - Fail request");
3279
3280 return WDI_STATUS_E_NOT_ALLOWED;
3281 }
3282
3283 /*------------------------------------------------------------------------
3284 Fill in Event data and post to the Main FSM
3285 ------------------------------------------------------------------------*/
3286 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3287 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3288 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3289 wdiEventData.pCBfnc = wdiReqStatusCb;
3290 wdiEventData.pUserData = pUserData;
3291
3292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3293}
3294
3295/**
schang86c22c42013-03-13 18:41:24 -07003296 @brief WDI_SetTxPowerReq will be called when the upper
3297 MAC wants to set Tx Power to HW.
3298 In state BUSY this request will be queued. Request won't
3299 be allowed in any other state.
3300
3301
3302 @param pwdiSetTxPowerParams: set TS Power parameters
3303 BSSID and target TX Power with dbm included
3304
3305 wdiReqStatusCb: callback for passing back the response
3306
3307 pUserData: user data will be passed back with the
3308 callback
3309
3310 @return Result of the function call
3311*/
3312WDI_Status
3313WDI_SetTxPowerReq
3314(
3315 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3316 WDA_SetTxPowerRspCb wdiReqStatusCb,
3317 void* pUserData
3318)
3319{
3320 WDI_EventInfoType wdiEventData;
3321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3322
3323 /*------------------------------------------------------------------------
3324 Sanity Check
3325 ------------------------------------------------------------------------*/
3326 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3327 {
3328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3329 "WDI API call before module is initialized - Fail request");
3330
3331 return WDI_STATUS_E_NOT_ALLOWED;
3332 }
3333
3334 /*------------------------------------------------------------------------
3335 Fill in Event data and post to the Main FSM
3336 ------------------------------------------------------------------------*/
3337 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3338 wdiEventData.pEventData = pwdiSetTxPowerParams;
3339 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3340 wdiEventData.pCBfnc = wdiReqStatusCb;
3341 wdiEventData.pUserData = pUserData;
3342
3343 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3344}
3345
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003346#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003347WDI_Status
3348WDI_TSMStatsReq
3349(
3350 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3351 WDI_TsmRspCb wdiReqStatusCb,
3352 void* pUserData
3353)
3354{
3355 WDI_EventInfoType wdiEventData;
3356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003357 /*------------------------------------------------------------------------
3358 Sanity Check
3359 ------------------------------------------------------------------------*/
3360 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3361 {
3362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3363 "WDI API call before module is initialized - Fail request");
3364
3365 return WDI_STATUS_E_NOT_ALLOWED;
3366 }
3367
3368 /*------------------------------------------------------------------------
3369 Fill in Event data and post to the Main FSM
3370 ------------------------------------------------------------------------*/
3371 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3372 wdiEventData.pEventData = pwdiTsmReqParams;
3373 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3374 wdiEventData.pCBfnc = wdiReqStatusCb;
3375 wdiEventData.pUserData = pUserData;
3376
3377 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3378
3379}
3380#endif
3381
3382/*========================================================================
3383
3384 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003385
Jeff Johnson295189b2012-06-20 16:38:30 -07003386==========================================================================*/
3387
3388/**
3389 @brief WDI_AddTSReq will be called when the upper MAC to inform
3390 the device of a successful add TSpec negotiation. HW
3391 needs to receive the TSpec Info from the UMAC in order
3392 to configure properly the QoS data traffic. Upon the
3393 call of this API the WLAN DAL will pack and send a HAL
3394 Add TS request message to the lower RIVA sub-system if
3395 DAL is in state STARTED.
3396
3397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003399
3400 WDI_PostAssocReq must have been called.
3401
3402 @param wdiAddTsReqParams: the add TS parameters as specified by
3403 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003404
Jeff Johnson295189b2012-06-20 16:38:30 -07003405 wdiAddTsRspCb: callback for passing back the response of
3406 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003407
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003409 callback
3410
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 @see WDI_PostAssocReq
3412 @return Result of the function call
3413*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003414WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003415WDI_AddTSReq
3416(
3417 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3418 WDI_AddTsRspCb wdiAddTsRspCb,
3419 void* pUserData
3420)
3421{
3422 WDI_EventInfoType wdiEventData;
3423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3424
3425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003426 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 ------------------------------------------------------------------------*/
3428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3429 {
3430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3431 "WDI API call before module is initialized - Fail request");
3432
Jeff Johnsone7245742012-09-05 17:12:55 -07003433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 }
3435
3436 /*------------------------------------------------------------------------
3437 Fill in Event data and post to the Main FSM
3438 ------------------------------------------------------------------------*/
3439 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003440 wdiEventData.pEventData = pwdiAddTsReqParams;
3441 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3442 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003443 wdiEventData.pUserData = pUserData;
3444
3445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3446
3447}/*WDI_AddTSReq*/
3448
3449
3450
3451/**
3452 @brief WDI_DelTSReq will be called when the upper MAC has ended
3453 admission on a specific AC. This is to inform HW that
3454 QoS traffic parameters must be rest. Upon the call of
3455 this API the WLAN DAL will pack and send a HAL Del TS
3456 request message to the lower RIVA sub-system if DAL is
3457 in state STARTED.
3458
3459 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003460 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003461
3462 WDI_AddTSReq must have been called.
3463
3464 @param wdiDelTsReqParams: the del TS parameters as specified by
3465 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003466
Jeff Johnson295189b2012-06-20 16:38:30 -07003467 wdiDelTsRspCb: callback for passing back the response of
3468 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003469
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003471 callback
3472
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 @see WDI_AddTSReq
3474 @return Result of the function call
3475*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003476WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003477WDI_DelTSReq
3478(
3479 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3480 WDI_DelTsRspCb wdiDelTsRspCb,
3481 void* pUserData
3482)
3483{
3484 WDI_EventInfoType wdiEventData;
3485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3486
3487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003489 ------------------------------------------------------------------------*/
3490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3491 {
3492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3493 "WDI API call before module is initialized - Fail request");
3494
Jeff Johnsone7245742012-09-05 17:12:55 -07003495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003496 }
3497
3498 /*------------------------------------------------------------------------
3499 Fill in Event data and post to the Main FSM
3500 ------------------------------------------------------------------------*/
3501 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003502 wdiEventData.pEventData = pwdiDelTsReqParams;
3503 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3504 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003505 wdiEventData.pUserData = pUserData;
3506
3507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3508
3509}/*WDI_DelTSReq*/
3510
3511
3512
3513/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003514 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003515 wishes to update the EDCA parameters used by HW for QoS
3516 data traffic. Upon the call of this API the WLAN DAL
3517 will pack and send a HAL Update EDCA Params request
3518 message to the lower RIVA sub-system if DAL is in state
3519 STARTED.
3520
3521 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003523
3524 WDI_PostAssocReq must have been called.
3525
Jeff Johnsone7245742012-09-05 17:12:55 -07003526 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003528
Jeff Johnson295189b2012-06-20 16:38:30 -07003529 wdiUpdateEDCAParamsRspCb: callback for passing back the
3530 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003531
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003533 callback
3534
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 @see WDI_PostAssocReq
3536 @return Result of the function call
3537*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003538WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003539WDI_UpdateEDCAParams
3540(
3541 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3542 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3543 void* pUserData
3544)
3545{
3546 WDI_EventInfoType wdiEventData;
3547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3548
3549 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003550 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003551 ------------------------------------------------------------------------*/
3552 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3553 {
3554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3555 "WDI API call before module is initialized - Fail request");
3556
Jeff Johnsone7245742012-09-05 17:12:55 -07003557 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003558 }
3559
3560 /*------------------------------------------------------------------------
3561 Fill in Event data and post to the Main FSM
3562 ------------------------------------------------------------------------*/
3563 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003564 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3565 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3566 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003567 wdiEventData.pUserData = pUserData;
3568
3569 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3570
3571}/*WDI_UpdateEDCAParams*/
3572
3573
3574/**
3575 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3576 successfully a BA session and needs to notify the HW for
3577 the appropriate settings to take place. Upon the call of
3578 this API the WLAN DAL will pack and send a HAL Add BA
3579 request message to the lower RIVA sub-system if DAL is
3580 in state STARTED.
3581
3582 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003583 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003584
3585 WDI_PostAssocReq must have been called.
3586
3587 @param wdiAddBAReqParams: the add BA parameters as specified by
3588 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003589
Jeff Johnson295189b2012-06-20 16:38:30 -07003590 wdiAddBARspCb: callback for passing back the response of
3591 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003592
Jeff Johnson295189b2012-06-20 16:38:30 -07003593 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003594 callback
3595
Jeff Johnson295189b2012-06-20 16:38:30 -07003596 @see WDI_PostAssocReq
3597 @return Result of the function call
3598*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003599WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003600WDI_AddBASessionReq
3601(
3602 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3603 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3604 void* pUserData
3605)
3606{
3607 WDI_EventInfoType wdiEventData;
3608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3609
3610 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003611 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 ------------------------------------------------------------------------*/
3613 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3614 {
3615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3616 "WDI API call before module is initialized - Fail request");
3617
Jeff Johnsone7245742012-09-05 17:12:55 -07003618 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003619 }
3620
3621 /*------------------------------------------------------------------------
3622 Fill in Event data and post to the Main FSM
3623 ------------------------------------------------------------------------*/
3624 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003625 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3626 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3627 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 wdiEventData.pUserData = pUserData;
3629
3630 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3631
3632}/*WDI_AddBASessionReq*/
3633
3634/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003636 inform HW that it has deleted a previously created BA
3637 session. Upon the call of this API the WLAN DAL will
3638 pack and send a HAL Del BA request message to the lower
3639 RIVA sub-system if DAL is in state STARTED.
3640
3641 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003642 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003643
3644 WDI_AddBAReq must have been called.
3645
3646 @param wdiDelBAReqParams: the del BA parameters as specified by
3647 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003648
Jeff Johnson295189b2012-06-20 16:38:30 -07003649 wdiDelBARspCb: callback for passing back the response of
3650 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003651
Jeff Johnson295189b2012-06-20 16:38:30 -07003652 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003653 callback
3654
Jeff Johnson295189b2012-06-20 16:38:30 -07003655 @see WDI_AddBAReq
3656 @return Result of the function call
3657*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003658WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003659WDI_DelBAReq
3660(
3661 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3662 WDI_DelBARspCb wdiDelBARspCb,
3663 void* pUserData
3664)
3665{
3666 WDI_EventInfoType wdiEventData;
3667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3668
3669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003670 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003671 ------------------------------------------------------------------------*/
3672 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3673 {
3674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3675 "WDI API call before module is initialized - Fail request");
3676
Jeff Johnsone7245742012-09-05 17:12:55 -07003677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003678 }
3679
3680 /*------------------------------------------------------------------------
3681 Fill in Event data and post to the Main FSM
3682 ------------------------------------------------------------------------*/
3683 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003684 wdiEventData.pEventData = pwdiDelBAReqParams;
3685 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3686 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003687 wdiEventData.pUserData = pUserData;
3688
3689 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3690
3691}/*WDI_DelBAReq*/
3692
Jeff Johnsone7245742012-09-05 17:12:55 -07003693/*========================================================================
3694
Jeff Johnson295189b2012-06-20 16:38:30 -07003695 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003696
Jeff Johnson295189b2012-06-20 16:38:30 -07003697==========================================================================*/
3698
3699/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 wants to set the power save related configurations of
3702 the WLAN Device. Upon the call of this API the WLAN DAL
3703 will pack and send a HAL Update CFG request message to
3704 the lower RIVA sub-system if DAL is in state STARTED.
3705
3706 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003708
3709 WDI_Start must have been called.
3710
Jeff Johnsone7245742012-09-05 17:12:55 -07003711 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003712 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003713
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 wdiSetPwrSaveCfgCb: callback for passing back the
3715 response of the set power save cfg operation received
3716 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003717
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003719 callback
3720
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 @return Result of the function call
3723*/
3724WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003725WDI_SetPwrSaveCfgReq
3726(
3727 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3728 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3729 void* pUserData
3730)
3731{
3732 WDI_EventInfoType wdiEventData;
3733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3734
3735 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003736 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003737 ------------------------------------------------------------------------*/
3738 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3739 {
3740 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3741 "WDI API call before module is initialized - Fail request");
3742
Jeff Johnsone7245742012-09-05 17:12:55 -07003743 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003744 }
3745
3746 /*------------------------------------------------------------------------
3747 Fill in Event data and post to the Main FSM
3748 ------------------------------------------------------------------------*/
3749 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003750 wdiEventData.pEventData = pwdiPowerSaveCfg;
3751 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3752 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003753 wdiEventData.pUserData = pUserData;
3754
3755 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3756
3757}/*WDI_SetPwrSaveCfgReq*/
3758
3759/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003761 request the device to get into IMPS power state. Upon
3762 the call of this API the WLAN DAL will send a HAL Enter
3763 IMPS request message to the lower RIVA sub-system if DAL
3764 is in state STARTED.
3765
3766 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003767 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003768
Jeff Johnsone7245742012-09-05 17:12:55 -07003769
3770 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 response of the Enter IMPS operation received from the
3772 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003773
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003775 callback
3776
Jeff Johnson295189b2012-06-20 16:38:30 -07003777 @see WDI_Start
3778 @return Result of the function call
3779*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003780WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003781WDI_EnterImpsReq
3782(
Mihir Shetea4306052014-03-25 00:02:54 +05303783 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3785 void* pUserData
3786)
3787{
3788 WDI_EventInfoType wdiEventData;
3789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3790
3791 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003792 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003793 ------------------------------------------------------------------------*/
3794 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3795 {
3796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3797 "WDI API call before module is initialized - Fail request");
3798
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 }
3801
3802 /*------------------------------------------------------------------------
3803 Fill in Event data and post to the Main FSM
3804 ------------------------------------------------------------------------*/
3805 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303806 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3807 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003808 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 wdiEventData.pUserData = pUserData;
3810
3811 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3812
3813}/*WDI_EnterImpsReq*/
3814
3815/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003816 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 request the device to get out of IMPS power state. Upon
3818 the call of this API the WLAN DAL will send a HAL Exit
3819 IMPS request message to the lower RIVA sub-system if DAL
3820 is in state STARTED.
3821
3822 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003823 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003824
Jeff Johnson295189b2012-06-20 16:38:30 -07003825
Jeff Johnsone7245742012-09-05 17:12:55 -07003826
3827 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003828 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003829
Jeff Johnson295189b2012-06-20 16:38:30 -07003830 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003831 callback
3832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 @see WDI_Start
3834 @return Result of the function call
3835*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003836WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003837WDI_ExitImpsReq
3838(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303839 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3841 void* pUserData
3842)
3843{
3844 WDI_EventInfoType wdiEventData;
3845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3846
3847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003848 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 ------------------------------------------------------------------------*/
3850 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3851 {
3852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3853 "WDI API call before module is initialized - Fail request");
3854
Jeff Johnsone7245742012-09-05 17:12:55 -07003855 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003856 }
3857
3858 /*------------------------------------------------------------------------
3859 Fill in Event data and post to the Main FSM
3860 ------------------------------------------------------------------------*/
3861 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303862 wdiEventData.pEventData = pwdiExitImpsReqParams;
3863 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003864 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003865 wdiEventData.pUserData = pUserData;
3866
3867 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3868
3869}/*WDI_ExitImpsReq*/
3870
3871/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003872 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003873 request the device to get into BMPS power state. Upon
3874 the call of this API the WLAN DAL will pack and send a
3875 HAL Enter BMPS request message to the lower RIVA
3876 sub-system if DAL is in state STARTED.
3877
3878 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003880
3881 WDI_PostAssocReq must have been called.
3882
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 wdiEnterBmpsRspCb: callback for passing back the
3887 response of the Enter BMPS operation received from the
3888 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003889
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 callback
3892
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 @see WDI_PostAssocReq
3894 @return Result of the function call
3895*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003896WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003897WDI_EnterBmpsReq
3898(
3899 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3900 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3901 void* pUserData
3902)
3903{
3904 WDI_EventInfoType wdiEventData;
3905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3906
3907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 ------------------------------------------------------------------------*/
3910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3911 {
3912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3913 "WDI API call before module is initialized - Fail request");
3914
Jeff Johnsone7245742012-09-05 17:12:55 -07003915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003916 }
3917
3918 /*------------------------------------------------------------------------
3919 Fill in Event data and post to the Main FSM
3920 ------------------------------------------------------------------------*/
3921 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003922 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3923 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3924 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 wdiEventData.pUserData = pUserData;
3926
3927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3928
3929}/*WDI_EnterBmpsReq*/
3930
3931/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 request the device to get out of BMPS power state. Upon
3934 the call of this API the WLAN DAL will pack and send a
3935 HAL Exit BMPS request message to the lower RIVA
3936 sub-system if DAL is in state STARTED.
3937
3938 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003940
3941 WDI_PostAssocReq must have been called.
3942
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 wdiExitBmpsRspCb: callback for passing back the response
3947 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003948
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003950 callback
3951
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 @see WDI_PostAssocReq
3953 @return Result of the function call
3954*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003955WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003956WDI_ExitBmpsReq
3957(
3958 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3959 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3960 void* pUserData
3961)
3962{
3963 WDI_EventInfoType wdiEventData;
3964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3965
3966 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003967 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 ------------------------------------------------------------------------*/
3969 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3970 {
3971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3972 "WDI API call before module is initialized - Fail request");
3973
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 }
3976
3977 /*------------------------------------------------------------------------
3978 Fill in Event data and post to the Main FSM
3979 ------------------------------------------------------------------------*/
3980 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003981 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3982 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3983 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003984 wdiEventData.pUserData = pUserData;
3985
3986 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3987
3988}/*WDI_ExitBmpsReq*/
3989
3990/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 request the device to get into UAPSD power state. Upon
3993 the call of this API the WLAN DAL will pack and send a
3994 HAL Enter UAPSD request message to the lower RIVA
3995 sub-system if DAL is in state STARTED.
3996
3997 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003998 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003999
4000 WDI_PostAssocReq must have been called.
4001 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004002
4003 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004004 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 wdiEnterUapsdRspCb: callback for passing back the
4007 response of the Enter UAPSD operation received from the
4008 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004009
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004011 callback
4012
Jeff Johnson295189b2012-06-20 16:38:30 -07004013 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4014 @return Result of the function call
4015*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004016WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004017WDI_EnterUapsdReq
4018(
4019 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4020 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4021 void* pUserData
4022)
4023{
4024 WDI_EventInfoType wdiEventData;
4025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4026
4027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 ------------------------------------------------------------------------*/
4030 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4031 {
4032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4033 "WDI API call before module is initialized - Fail request");
4034
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 }
4037
4038 /*------------------------------------------------------------------------
4039 Fill in Event data and post to the Main FSM
4040 ------------------------------------------------------------------------*/
4041 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4043 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4044 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 wdiEventData.pUserData = pUserData;
4046
4047 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4048
4049}/*WDI_EnterUapsdReq*/
4050
4051/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004053 request the device to get out of UAPSD power state. Upon
4054 the call of this API the WLAN DAL will send a HAL Exit
4055 UAPSD request message to the lower RIVA sub-system if
4056 DAL is in state STARTED.
4057
4058 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004060
4061 WDI_PostAssocReq must have been called.
4062
Jeff Johnsone7245742012-09-05 17:12:55 -07004063 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 response of the Exit UAPSD operation received from the
4065 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004066
Jeff Johnson295189b2012-06-20 16:38:30 -07004067 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004068 callback
4069
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 @see WDI_PostAssocReq
4071 @return Result of the function call
4072*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004073WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004074WDI_ExitUapsdReq
4075(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004076 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004077 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4078 void* pUserData
4079)
4080{
4081 WDI_EventInfoType wdiEventData;
4082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4083
4084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004085 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004086 ------------------------------------------------------------------------*/
4087 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4088 {
4089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4090 "WDI API call before module is initialized - Fail request");
4091
Jeff Johnsone7245742012-09-05 17:12:55 -07004092 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004093 }
4094
4095 /*------------------------------------------------------------------------
4096 Fill in Event data and post to the Main FSM
4097 ------------------------------------------------------------------------*/
4098 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004099 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4100 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 wdiEventData.pUserData = pUserData;
4103
4104 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4105
4106}/*WDI_ExitUapsdReq*/
4107
4108/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004110 MAC wants to set the UAPSD related configurations
4111 of an associated STA (while acting as an AP) to the WLAN
4112 Device. Upon the call of this API the WLAN DAL will pack
4113 and send a HAL Update UAPSD params request message to
4114 the lower RIVA sub-system if DAL is in state STARTED.
4115
4116 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004118
4119 WDI_ConfigBSSReq must have been called.
4120
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004122 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004123
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 wdiUpdateUapsdParamsCb: callback for passing back the
4125 response of the update UAPSD params operation received
4126 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004127
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004129 callback
4130
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 @see WDI_ConfigBSSReq
4132 @return Result of the function call
4133*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004134WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004135WDI_UpdateUapsdParamsReq
4136(
4137 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4138 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4139 void* pUserData
4140)
4141{
4142 WDI_EventInfoType wdiEventData;
4143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4144
4145 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 ------------------------------------------------------------------------*/
4148 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4149 {
4150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4151 "WDI API call before module is initialized - Fail request");
4152
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 }
4155
4156 /*------------------------------------------------------------------------
4157 Fill in Event data and post to the Main FSM
4158 ------------------------------------------------------------------------*/
4159 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004160 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004161 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 wdiEventData.pUserData = pUserData;
4164
4165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4166
4167}/*WDI_UpdateUapsdParamsReq*/
4168
4169/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004171 MAC wants to set the UAPSD related configurations before
4172 requesting for enter UAPSD power state to the WLAN
4173 Device. Upon the call of this API the WLAN DAL will pack
4174 and send a HAL Set UAPSD params request message to
4175 the lower RIVA sub-system if DAL is in state STARTED.
4176
4177 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004178 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004179
4180 WDI_PostAssocReq must have been called.
4181
4182 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4183 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004184
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 wdiSetUapsdAcParamsCb: callback for passing back the
4186 response of the set UAPSD params operation received from
4187 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004188
Jeff Johnson295189b2012-06-20 16:38:30 -07004189 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 callback
4191
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 @see WDI_PostAssocReq
4193 @return Result of the function call
4194*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004195WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004196WDI_SetUapsdAcParamsReq
4197(
4198 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4199 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4200 void* pUserData
4201)
4202{
4203 WDI_EventInfoType wdiEventData;
4204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4205
4206 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004207 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 ------------------------------------------------------------------------*/
4209 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4210 {
4211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4212 "WDI API call before module is initialized - Fail request");
4213
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 }
4216
4217 /*------------------------------------------------------------------------
4218 Fill in Event data and post to the Main FSM
4219 ------------------------------------------------------------------------*/
4220 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004221 wdiEventData.pEventData = pwdiUapsdInfo;
4222 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4223 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 wdiEventData.pUserData = pUserData;
4225
4226 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4227
4228}/*WDI_SetUapsdAcParamsReq*/
4229
4230/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304231 @brief WDI_FWLoggingDXEdoneInd
4232
4233 FW Logging DXE done Indication from the upper layer will be sent
4234 down to HAL
4235
4236 @param WDI_FWLoggingDXEdoneIndInfoType
4237
4238 @see
4239
4240 @return Status of the request
4241*/
4242WDI_Status
4243WDI_FWLoggingDXEdoneInd
4244(
4245 WDI_FWLoggingDXEdoneIndInfoType* pwdiFWLoggingDXEdoneInd
4246)
4247{
4248
4249 WDI_EventInfoType wdiEventData;
4250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4251
4252 /*------------------------------------------------------------------------
4253 Sanity Check
4254 ------------------------------------------------------------------------*/
4255 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4256 {
4257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4258 "WDI API call before module is initialized - Fail request");
4259
4260 return WDI_STATUS_E_NOT_ALLOWED;
4261 }
4262
4263 /*------------------------------------------------------------------------
4264 Fill in Event data and post to the Main FSM
4265 ------------------------------------------------------------------------*/
4266 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
4267 wdiEventData.pEventData = pwdiFWLoggingDXEdoneInd;
4268 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingDXEdoneInd);
4269 wdiEventData.pCBfnc = NULL;
4270 wdiEventData.pUserData = NULL;
4271
4272 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4273
4274}/*WDI_FWLoggingDXEdoneInd*/
4275
4276/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304277 @brief WDI_GetFrameLogReq will be called when the upper
4278 MAC wants to initialize frame logging. Upon the call of
4279 this API the WLAN DAL will pack and send a HAL
4280 Frame logging init request message to
4281 the lower RIVA sub-system.
4282
4283 In state BUSY this request will be queued. Request won't
4284 be allowed in any other state.
4285
4286
4287 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4288 as specified by the Device Interface
4289
4290 wdiGetFrameLogRspCb: callback for passing back the
4291 response of the frame logging init operation received
4292 from the device
4293
4294 pUserData: user data will be passed back with the
4295 callback
4296
4297 @return Result of the function call
4298*/
4299WDI_Status
4300WDI_GetFrameLogReq
4301(
4302 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4303 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4304 void* pUserData
4305)
4306{
4307 WDI_EventInfoType wdiEventData;
4308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4309
4310 /*------------------------------------------------------------------------
4311 Sanity Check
4312 ------------------------------------------------------------------------*/
4313 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4314 {
4315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4316 "WDI API call before module is initialized - Fail request");
4317
4318 return WDI_STATUS_E_NOT_ALLOWED;
4319 }
4320
4321 /*------------------------------------------------------------------------
4322 Fill in Event data and post to the Main FSM
4323 ------------------------------------------------------------------------*/
4324 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4325 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4326 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4327 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4328 wdiEventData.pUserData = pUserData;
4329
4330 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4331}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304332
4333
4334/**
4335 @brief WDI_FatalEventLogsReq will be called when the upper
4336 MAC wants to send the flush command. Upon the call of
4337 this API the WLAN DAL will pack and send a HAL
4338 Fatal Event Req message to the lower RIVA sub-system.
4339
4340 In state BUSY this request will be queued. Request won't
4341 be allowed in any other state.
4342
4343
4344 @param pwdiFlushLogsReqInfo: the Flush Logs params
4345 as specified by the Device Interface
4346
4347 wdiFlushLogsRspCb: callback for passing back the
4348 response of the Flush Logs operation received
4349 from the device
4350
4351 pUserData: user data will be passed back with the
4352 callback
4353
4354 @return Result of the function call
4355*/
4356
4357WDI_Status
4358WDI_FatalEventLogsReq
4359(
4360 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4361 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4362 void* pUserData
4363)
4364{
4365 WDI_EventInfoType wdiEventData;
4366
4367 /*------------------------------------------------------------------------
4368 Sanity Check
4369 ------------------------------------------------------------------------*/
4370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4371 {
4372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4373 "WDI API call before module is initialized - Fail request");
4374
4375 return WDI_STATUS_E_NOT_ALLOWED;
4376 }
4377
4378 /*------------------------------------------------------------------------
4379 Fill in Event data and post to the Main FSM
4380 ------------------------------------------------------------------------*/
4381 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4382 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4383 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4384 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4385 wdiEventData.pUserData = pUserData;
4386
4387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4388
4389}
4390
4391
Siddharth Bhal64246172015-02-27 01:04:37 +05304392/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304393 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304394 MAC wants to initialize frame logging. Upon the call of
4395 this API the WLAN DAL will pack and send a HAL
4396 Frame logging init request message to
4397 the lower RIVA sub-system.
4398
4399 In state BUSY this request will be queued. Request won't
4400 be allowed in any other state.
4401
4402
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304403 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304404 as specified by the Device Interface
4405
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304406 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304407 response of the frame logging init operation received
4408 from the device
4409
4410 pUserData: user data will be passed back with the
4411 callback
4412
4413 @return Result of the function call
4414*/
4415WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304416WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304417(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304418 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4419 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304420 void* pUserData
4421)
4422{
4423 WDI_EventInfoType wdiEventData;
4424
4425 /*------------------------------------------------------------------------
4426 Sanity Check
4427 ------------------------------------------------------------------------*/
4428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4429 {
4430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4431 "WDI API call before module is initialized - Fail request");
4432
4433 return WDI_STATUS_E_NOT_ALLOWED;
4434 }
4435
4436 /*------------------------------------------------------------------------
4437 Fill in Event data and post to the Main FSM
4438 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304439 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4440 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4441 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4442 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304443 wdiEventData.pUserData = pUserData;
4444
4445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4446}
4447
4448/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004449 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004450 MAC wants to set/reset the RXP filters for received pkts
4451 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4452 and send a HAL configure RXP filter request message to
4453 the lower RIVA sub-system.
4454
4455 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004457
Jeff Johnsone7245742012-09-05 17:12:55 -07004458
4459 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004460 filter as specified by the Device
4461 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004462
Jeff Johnson295189b2012-06-20 16:38:30 -07004463 wdiConfigureRxpFilterCb: callback for passing back the
4464 response of the configure RXP filter operation received
4465 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004466
Jeff Johnson295189b2012-06-20 16:38:30 -07004467 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004468 callback
4469
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 @return Result of the function call
4471*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004472WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004473WDI_ConfigureRxpFilterReq
4474(
4475 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4476 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4477 void* pUserData
4478)
4479{
4480 WDI_EventInfoType wdiEventData;
4481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4482
4483 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004484 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004485 ------------------------------------------------------------------------*/
4486 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4487 {
4488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4489 "WDI API call before module is initialized - Fail request");
4490
Jeff Johnsone7245742012-09-05 17:12:55 -07004491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004492 }
4493
4494 /*------------------------------------------------------------------------
4495 Fill in Event data and post to the Main FSM
4496 ------------------------------------------------------------------------*/
4497 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004498 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4499 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4500 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004501 wdiEventData.pUserData = pUserData;
4502
4503 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4504}/*WDI_ConfigureRxpFilterReq*/
4505
4506/**
4507 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4508 wants to set the beacon filters while in power save.
4509 Upon the call of this API the WLAN DAL will pack and
4510 send a Beacon filter request message to the
4511 lower RIVA sub-system.
4512
4513 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004514 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004515
Jeff Johnsone7245742012-09-05 17:12:55 -07004516
4517 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004518 filter as specified by the Device
4519 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004520
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 wdiBeaconFilterCb: callback for passing back the
4522 response of the set beacon filter operation received
4523 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004524
Jeff Johnson295189b2012-06-20 16:38:30 -07004525 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004526 callback
4527
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 @return Result of the function call
4529*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004530WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004531WDI_SetBeaconFilterReq
4532(
4533 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4534 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4535 void* pUserData
4536)
4537{
4538 WDI_EventInfoType wdiEventData;
4539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4540
4541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004542 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 ------------------------------------------------------------------------*/
4544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4545 {
4546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4547 "WDI API call before module is initialized - Fail request");
4548
Jeff Johnsone7245742012-09-05 17:12:55 -07004549 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004550 }
4551
4552 /*------------------------------------------------------------------------
4553 Fill in Event data and post to the Main FSM
4554 ------------------------------------------------------------------------*/
4555 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004556 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004557 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004558 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 wdiEventData.pUserData = pUserData;
4560
4561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4562}/*WDI_SetBeaconFilterReq*/
4563
4564/**
4565 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4566 wants to remove the beacon filter for particular IE
4567 while in power save. Upon the call of this API the WLAN
4568 DAL will pack and send a remove Beacon filter request
4569 message to the lower RIVA sub-system.
4570
4571 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004572 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004573
Jeff Johnsone7245742012-09-05 17:12:55 -07004574
4575 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004576 filter as specified by the Device
4577 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004578
Jeff Johnson295189b2012-06-20 16:38:30 -07004579 wdiBeaconFilterCb: callback for passing back the
4580 response of the remove beacon filter operation received
4581 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004582
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 callback
4585
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 @return Result of the function call
4587*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004588WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004589WDI_RemBeaconFilterReq
4590(
4591 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4592 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4593 void* pUserData
4594)
4595{
4596 WDI_EventInfoType wdiEventData;
4597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4598
4599 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004600 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004601 ------------------------------------------------------------------------*/
4602 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4603 {
4604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4605 "WDI API call before module is initialized - Fail request");
4606
Jeff Johnsone7245742012-09-05 17:12:55 -07004607 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004608 }
4609
4610 /*------------------------------------------------------------------------
4611 Fill in Event data and post to the Main FSM
4612 ------------------------------------------------------------------------*/
4613 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004614 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004615 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004616 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004617 wdiEventData.pUserData = pUserData;
4618
4619 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4620}/*WDI_RemBeaconFilterReq*/
4621
4622/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004623 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004624 MAC wants to set the RSSI thresholds related
4625 configurations while in power save. Upon the call of
4626 this API the WLAN DAL will pack and send a HAL Set RSSI
4627 thresholds request message to the lower RIVA
4628 sub-system if DAL is in state STARTED.
4629
4630 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004631 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004632
4633 WDI_PostAssocReq must have been called.
4634
4635 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4636 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004637
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 wdiSetUapsdAcParamsCb: callback for passing back the
4639 response of the set UAPSD params operation received from
4640 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004641
Jeff Johnson295189b2012-06-20 16:38:30 -07004642 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004643 callback
4644
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 @see WDI_PostAssocReq
4646 @return Result of the function call
4647*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004648WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004649WDI_SetRSSIThresholdsReq
4650(
4651 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4652 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4653 void* pUserData
4654)
4655{
4656 WDI_EventInfoType wdiEventData;
4657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4658
4659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004660 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004661 ------------------------------------------------------------------------*/
4662 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4663 {
4664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4665 "WDI API call before module is initialized - Fail request");
4666
Jeff Johnsone7245742012-09-05 17:12:55 -07004667 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 }
4669
4670 /*------------------------------------------------------------------------
4671 Fill in Event data and post to the Main FSM
4672 ------------------------------------------------------------------------*/
4673 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004674 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004675 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004676 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004677 wdiEventData.pUserData = pUserData;
4678
4679 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4680}/* WDI_SetRSSIThresholdsReq*/
4681
4682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 wants to set the filter to minimize unnecessary host
4685 wakeup due to broadcast traffic while in power save.
4686 Upon the call of this API the WLAN DAL will pack and
4687 send a HAL host offload request message to the
4688 lower RIVA sub-system if DAL is in state STARTED.
4689
4690 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004691 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004692
4693 WDI_PostAssocReq must have been called.
4694
Jeff Johnsone7245742012-09-05 17:12:55 -07004695 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004696 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004697
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 wdiHostOffloadCb: callback for passing back the response
4699 of the host offload operation received from the
4700 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004701
Jeff Johnson295189b2012-06-20 16:38:30 -07004702 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004703 callback
4704
Jeff Johnson295189b2012-06-20 16:38:30 -07004705 @see WDI_PostAssocReq
4706 @return Result of the function call
4707*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004708WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004709WDI_HostOffloadReq
4710(
4711 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4712 WDI_HostOffloadCb wdiHostOffloadCb,
4713 void* pUserData
4714)
4715{
4716 WDI_EventInfoType wdiEventData;
4717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4718
4719 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004720 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 ------------------------------------------------------------------------*/
4722 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4723 {
4724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4725 "WDI API call before module is initialized - Fail request");
4726
Jeff Johnsone7245742012-09-05 17:12:55 -07004727 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004728 }
4729
4730 /*------------------------------------------------------------------------
4731 Fill in Event data and post to the Main FSM
4732 ------------------------------------------------------------------------*/
4733 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004734 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004735 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004736 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004737 wdiEventData.pUserData = pUserData;
4738
4739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4740}/*WDI_HostOffloadReq*/
4741
4742/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004743 @brief WDI_KeepAliveReq will be called when the upper MAC
4744 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004745 and minimize unnecessary host wakeups due to while in power save.
4746 Upon the call of this API the WLAN DAL will pack and
4747 send a HAL Keep Alive request message to the
4748 lower RIVA sub-system if DAL is in state STARTED.
4749
4750 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004751 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004752
4753 WDI_PostAssocReq must have been called.
4754
Jeff Johnsone7245742012-09-05 17:12:55 -07004755 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004756 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004757
Jeff Johnson295189b2012-06-20 16:38:30 -07004758 wdiKeepAliveCb: callback for passing back the response
4759 of the Keep Alive operation received from the
4760 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004761
Jeff Johnson295189b2012-06-20 16:38:30 -07004762 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004763 callback
4764
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 @see WDI_PostAssocReq
4766 @return Result of the function call
4767*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004768WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004769WDI_KeepAliveReq
4770(
4771 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4772 WDI_KeepAliveCb wdiKeepAliveCb,
4773 void* pUserData
4774)
4775{
4776 WDI_EventInfoType wdiEventData;
4777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4778
4779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 ------------------------------------------------------------------------*/
4782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4783 {
4784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4785 "WDI_KeepAliveReq: WDI API call before module "
4786 "is initialized - Fail request");
4787
Jeff Johnsone7245742012-09-05 17:12:55 -07004788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004789 }
4790
4791 /*------------------------------------------------------------------------
4792 Fill in Event data and post to the Main FSM
4793 ------------------------------------------------------------------------*/
4794 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004795 wdiEventData.pEventData = pwdiKeepAliveParams;
4796 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4797 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004798 wdiEventData.pUserData = pUserData;
4799
4800 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4801}/*WDI_KeepAliveReq*/
4802
4803/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004804 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004805 wants to set the Wowl Bcast ptrn to minimize unnecessary
4806 host wakeup due to broadcast traffic while in power
4807 save. Upon the call of this API the WLAN DAL will pack
4808 and send a HAL Wowl Bcast ptrn request message to the
4809 lower RIVA sub-system if DAL is in state STARTED.
4810
4811 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004812 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004813
4814 WDI_PostAssocReq must have been called.
4815
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004818
Jeff Johnson295189b2012-06-20 16:38:30 -07004819 wdiWowlAddBcPtrnCb: callback for passing back the
4820 response of the add Wowl bcast ptrn operation received
4821 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004822
Jeff Johnson295189b2012-06-20 16:38:30 -07004823 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 callback
4825
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 @see WDI_PostAssocReq
4827 @return Result of the function call
4828*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004829WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004830WDI_WowlAddBcPtrnReq
4831(
4832 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4833 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4834 void* pUserData
4835)
4836{
4837 WDI_EventInfoType wdiEventData;
4838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4839
4840 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004841 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004842 ------------------------------------------------------------------------*/
4843 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4844 {
4845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4846 "WDI API call before module is initialized - Fail request");
4847
Jeff Johnsone7245742012-09-05 17:12:55 -07004848 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004849 }
4850
4851 /*------------------------------------------------------------------------
4852 Fill in Event data and post to the Main FSM
4853 ------------------------------------------------------------------------*/
4854 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004856 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004857 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 wdiEventData.pUserData = pUserData;
4859
4860 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4861}/*WDI_WowlAddBcPtrnReq*/
4862
4863/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004864 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004865 wants to clear the Wowl Bcast ptrn. Upon the call of
4866 this API the WLAN DAL will pack and send a HAL delete
4867 Wowl Bcast ptrn request message to the lower RIVA
4868 sub-system if DAL is in state STARTED.
4869
4870 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004871 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004872
4873 WDI_WowlAddBcPtrnReq must have been called.
4874
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004876 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004877
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 wdiWowlDelBcPtrnCb: callback for passing back the
4879 response of the del Wowl bcast ptrn operation received
4880 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004881
Jeff Johnson295189b2012-06-20 16:38:30 -07004882 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004883 callback
4884
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 @see WDI_WowlAddBcPtrnReq
4886 @return Result of the function call
4887*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004888WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004889WDI_WowlDelBcPtrnReq
4890(
4891 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4892 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4893 void* pUserData
4894)
4895{
4896 WDI_EventInfoType wdiEventData;
4897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4898
4899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004901 ------------------------------------------------------------------------*/
4902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4903 {
4904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4905 "WDI API call before module is initialized - Fail request");
4906
Jeff Johnsone7245742012-09-05 17:12:55 -07004907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004908 }
4909
4910 /*------------------------------------------------------------------------
4911 Fill in Event data and post to the Main FSM
4912 ------------------------------------------------------------------------*/
4913 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004914 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004915 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004916 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004917 wdiEventData.pUserData = pUserData;
4918
4919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4920}/*WDI_WowlDelBcPtrnReq*/
4921
4922/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004923 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004924 wants to enter the Wowl state to minimize unnecessary
4925 host wakeup while in power save. Upon the call of this
4926 API the WLAN DAL will pack and send a HAL Wowl enter
4927 request message to the lower RIVA sub-system if DAL is
4928 in state STARTED.
4929
4930 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004931 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004932
4933 WDI_PostAssocReq must have been called.
4934
Jeff Johnsone7245742012-09-05 17:12:55 -07004935 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004936 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004937
Jeff Johnson295189b2012-06-20 16:38:30 -07004938 wdiWowlEnterReqCb: callback for passing back the
4939 response of the enter Wowl operation received from the
4940 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004941
Jeff Johnson295189b2012-06-20 16:38:30 -07004942 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004943 callback
4944
Jeff Johnson295189b2012-06-20 16:38:30 -07004945 @see WDI_PostAssocReq
4946 @return Result of the function call
4947*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004948WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004949WDI_WowlEnterReq
4950(
4951 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4952 WDI_WowlEnterReqCb wdiWowlEnterCb,
4953 void* pUserData
4954)
4955{
4956 WDI_EventInfoType wdiEventData;
4957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4958
4959 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004960 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004961 ------------------------------------------------------------------------*/
4962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4963 {
4964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4965 "WDI API call before module is initialized - Fail request");
4966
Jeff Johnsone7245742012-09-05 17:12:55 -07004967 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004968 }
4969
4970 /*------------------------------------------------------------------------
4971 Fill in Event data and post to the Main FSM
4972 ------------------------------------------------------------------------*/
4973 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004974 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004975 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004976 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004977 wdiEventData.pUserData = pUserData;
4978
4979 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4980}/*WDI_WowlEnterReq*/
4981
4982/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004983 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004984 wants to exit the Wowl state. Upon the call of this API
4985 the WLAN DAL will pack and send a HAL Wowl exit request
4986 message to the lower RIVA sub-system if DAL is in state
4987 STARTED.
4988
4989 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004990 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004991
4992 WDI_WowlEnterReq must have been called.
4993
Jeff Johnsone7245742012-09-05 17:12:55 -07004994 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004995 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004996
Jeff Johnson295189b2012-06-20 16:38:30 -07004997 wdiWowlExitReqCb: callback for passing back the response
4998 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004999
Jeff Johnson295189b2012-06-20 16:38:30 -07005000 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005001 callback
5002
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 @see WDI_WowlEnterReq
5004 @return Result of the function call
5005*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005006WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005007WDI_WowlExitReq
5008(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005009 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005010 WDI_WowlExitReqCb wdiWowlExitCb,
5011 void* pUserData
5012)
5013{
5014 WDI_EventInfoType wdiEventData;
5015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5016
5017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005018 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 ------------------------------------------------------------------------*/
5020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5021 {
5022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5023 "WDI API call before module is initialized - Fail request");
5024
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005026 }
5027
5028 /*------------------------------------------------------------------------
5029 Fill in Event data and post to the Main FSM
5030 ------------------------------------------------------------------------*/
5031 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005032 wdiEventData.pEventData = pwdiWowlExitParams;
5033 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005034 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 wdiEventData.pUserData = pUserData;
5036
5037 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5038}/*WDI_WowlExitReq*/
5039
5040/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005041 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005042 the upper MAC wants to dynamically adjusts the listen
5043 interval based on the WLAN/MSM activity. Upon the call
5044 of this API the WLAN DAL will pack and send a HAL
5045 configure Apps Cpu Wakeup State request message to the
5046 lower RIVA sub-system.
5047
5048 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005049 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005050
Jeff Johnsone7245742012-09-05 17:12:55 -07005051
5052 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005053 Apps Cpu Wakeup State as specified by the
5054 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005055
Jeff Johnson295189b2012-06-20 16:38:30 -07005056 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5057 back the response of the configure Apps Cpu Wakeup State
5058 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005059
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005061 callback
5062
Jeff Johnson295189b2012-06-20 16:38:30 -07005063 @return Result of the function call
5064*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005065WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005066WDI_ConfigureAppsCpuWakeupStateReq
5067(
5068 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5069 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5070 void* pUserData
5071)
5072{
5073 WDI_EventInfoType wdiEventData;
5074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5075
5076 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 ------------------------------------------------------------------------*/
5079 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5080 {
5081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5082 "WDI API call before module is initialized - Fail request");
5083
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005085 }
5086
5087 /*------------------------------------------------------------------------
5088 Fill in Event data and post to the Main FSM
5089 ------------------------------------------------------------------------*/
5090 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005091 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5092 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5093 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005094 wdiEventData.pUserData = pUserData;
5095
5096 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5097}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5098/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005099 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005100 to to perform a flush operation on a given AC. Upon the
5101 call of this API the WLAN DAL will pack and send a HAL
5102 Flush AC request message to the lower RIVA sub-system if
5103 DAL is in state STARTED.
5104
5105 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005106 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005107
5108 WDI_AddBAReq must have been called.
5109
Jeff Johnsone7245742012-09-05 17:12:55 -07005110 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005111 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005112
Jeff Johnson295189b2012-06-20 16:38:30 -07005113 wdiFlushAcRspCb: callback for passing back the response
5114 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005115
Jeff Johnson295189b2012-06-20 16:38:30 -07005116 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005117 callback
5118
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 @see WDI_AddBAReq
5120 @return Result of the function call
5121*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005122WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005123WDI_FlushAcReq
5124(
5125 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5126 WDI_FlushAcRspCb wdiFlushAcRspCb,
5127 void* pUserData
5128)
5129{
5130 WDI_EventInfoType wdiEventData;
5131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5132
5133 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005135 ------------------------------------------------------------------------*/
5136 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5137 {
5138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5139 "WDI API call before module is initialized - Fail request");
5140
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 }
5143
5144 /*------------------------------------------------------------------------
5145 Fill in Event data and post to the Main FSM
5146 ------------------------------------------------------------------------*/
5147 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 wdiEventData.pEventData = pwdiFlushAcReqParams;
5149 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5150 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 wdiEventData.pUserData = pUserData;
5152
5153 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5154
5155}/*WDI_FlushAcReq*/
5156
5157/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005158 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005159 wants to notify the lower mac on a BT AMP event. This is
5160 to inform BTC-SLM that some BT AMP event occurred. Upon
5161 the call of this API the WLAN DAL will pack and send a
5162 HAL BT AMP event request message to the lower RIVA
5163 sub-system if DAL is in state STARTED.
5164
5165 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005166 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005167
Jeff Johnsone7245742012-09-05 17:12:55 -07005168
5169 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005170 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005171
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 wdiBtAmpEventRspCb: callback for passing back the
5173 response of the BT AMP event operation received from the
5174 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005175
Jeff Johnson295189b2012-06-20 16:38:30 -07005176 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 callback
5178
Jeff Johnson295189b2012-06-20 16:38:30 -07005179 @return Result of the function call
5180*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005181WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005182WDI_BtAmpEventReq
5183(
5184 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5185 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5186 void* pUserData
5187)
5188{
5189 WDI_EventInfoType wdiEventData;
5190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5191
5192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005193 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005194 ------------------------------------------------------------------------*/
5195 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5196 {
5197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5198 "WDI API call before module is initialized - Fail request");
5199
Jeff Johnsone7245742012-09-05 17:12:55 -07005200 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005201 }
5202
5203 /*------------------------------------------------------------------------
5204 Fill in Event data and post to the Main FSM
5205 ------------------------------------------------------------------------*/
5206 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005207 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5208 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5209 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005210 wdiEventData.pUserData = pUserData;
5211
5212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5213
5214}/*WDI_BtAmpEventReq*/
5215
Jeff Johnsone7245742012-09-05 17:12:55 -07005216#ifdef FEATURE_OEM_DATA_SUPPORT
5217/**
5218 @brief WDI_Start Oem Data Req will be called when the upper MAC
5219 wants to notify the lower mac on a oem data Req event.Upon
5220 the call of this API the WLAN DAL will pack and send a
5221 HAL OEM Data Req event request message to the lower RIVA
5222 sub-system if DAL is in state STARTED.
5223
5224 In state BUSY this request will be queued. Request won't
5225 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005226
5227
Jeff Johnsone7245742012-09-05 17:12:55 -07005228
5229 @param pwdiOemDataReqParams: the Oem Data Req as
5230 specified by the Device Interface
5231
5232 wdiStartOemDataRspCb: callback for passing back the
5233 response of the Oem Data Req received from the
5234 device
5235
5236 pUserData: user data will be passed back with the
5237 callback
5238
5239 @return Result of the function call
5240*/
5241WDI_Status
5242WDI_StartOemDataReq
5243(
5244 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5245 WDI_oemDataRspCb wdiOemDataRspCb,
5246 void* pUserData
5247)
5248{
5249 WDI_EventInfoType wdiEventData;
5250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5251
5252 /*------------------------------------------------------------------------
5253 Sanity Check
5254 ------------------------------------------------------------------------*/
5255 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5256 {
5257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5258 "WDI API call before module is initialized - Fail request");
5259
5260 return WDI_STATUS_E_NOT_ALLOWED;
5261 }
5262
5263 /*------------------------------------------------------------------------
5264 Fill in Event data and post to the Main FSM
5265 ------------------------------------------------------------------------*/
5266 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5267 wdiEventData.pEventData = pwdiOemDataReqParams;
5268 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5269 wdiEventData.pCBfnc = wdiOemDataRspCb;
5270 wdiEventData.pUserData = pUserData;
5271
5272 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5273
5274
5275}
5276
5277#endif
5278
5279
5280/*========================================================================
5281
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005283
Jeff Johnson295189b2012-06-20 16:38:30 -07005284==========================================================================*/
5285/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005286 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005287 the WLAN HW to change the current channel of operation.
5288 Upon the call of this API the WLAN DAL will pack and
5289 send a HAL Start request message to the lower RIVA
5290 sub-system if DAL is in state STARTED.
5291
5292 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005293 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005294
5295 WDI_Start must have been called.
5296
Jeff Johnsone7245742012-09-05 17:12:55 -07005297 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005298 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005299
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 wdiSwitchChRspCb: callback for passing back the response
5301 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005302
Jeff Johnson295189b2012-06-20 16:38:30 -07005303 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005304 callback
5305
Jeff Johnson295189b2012-06-20 16:38:30 -07005306 @see WDI_Start
5307 @return Result of the function call
5308*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005309WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005310WDI_SwitchChReq
5311(
5312 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5313 WDI_SwitchChRspCb wdiSwitchChRspCb,
5314 void* pUserData
5315)
5316{
5317 WDI_EventInfoType wdiEventData;
5318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5319
5320 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005321 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005322 ------------------------------------------------------------------------*/
5323 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5324 {
5325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5326 "WDI API call before module is initialized - Fail request");
5327
Jeff Johnsone7245742012-09-05 17:12:55 -07005328 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005329 }
5330
5331 /*------------------------------------------------------------------------
5332 Fill in Event data and post to the Main FSM
5333 ------------------------------------------------------------------------*/
5334 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005335 wdiEventData.pEventData = pwdiSwitchChReqParams;
5336 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5337 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 wdiEventData.pUserData = pUserData;
5339
5340 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5341
5342}/*WDI_SwitchChReq*/
5343
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005344/**
5345 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5346 the WLAN HW to change the current channel of operation.
5347 Upon the call of this API the WLAN DAL will pack and
5348 send a HAL Start request message to the lower RIVA
5349 sub-system if DAL is in state STARTED.
5350 This request message also includes source of channel switch,
5351 like CSA,
5352
5353 In state BUSY this request will be queued. Request won't
5354 be allowed in any other state.
5355
5356 WDI_Start must have been called.
5357
5358 @param wdiSwitchChReqParams: the switch ch parameters as
5359 specified by the Device Interface
5360
5361 wdiSwitchChRspCb: callback for passing back the response
5362 of the switch ch operation received from the device
5363
5364 pUserData: user data will be passed back with the
5365 callback
5366
5367 @see WDI_Start
5368 @return Result of the function call
5369*/
5370WDI_Status
5371WDI_SwitchChReq_V1
5372(
5373 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5374 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5375 void* pUserData
5376)
5377{
5378 WDI_EventInfoType wdiEventData;
5379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5381 "WDI API call WDI_SwitchChReq_V1");
5382 /*------------------------------------------------------------------------
5383 Sanity Check
5384 ------------------------------------------------------------------------*/
5385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5386 {
5387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5388 "WDI API call before module is initialized - Fail request");
5389
5390 return WDI_STATUS_E_NOT_ALLOWED;
5391 }
5392
5393 /*------------------------------------------------------------------------
5394 Fill in Event data and post to the Main FSM
5395 ------------------------------------------------------------------------*/
5396 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5397 wdiEventData.pEventData = pwdiSwitchChReqParams;
5398 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5399 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5400 wdiEventData.pUserData = pUserData;
5401
5402 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5403
5404}/*WDI_SwitchChReq_V1*/
5405
Jeff Johnson295189b2012-06-20 16:38:30 -07005406
5407/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005408 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005409 wishes to add or update a STA in HW. Upon the call of
5410 this API the WLAN DAL will pack and send a HAL Start
5411 message request message to the lower RIVA sub-system if
5412 DAL is in state STARTED.
5413
5414 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005415 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005416
5417 WDI_Start must have been called.
5418
Jeff Johnsone7245742012-09-05 17:12:55 -07005419 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005421
Jeff Johnson295189b2012-06-20 16:38:30 -07005422 wdiConfigSTARspCb: callback for passing back the
5423 response of the config STA operation received from the
5424 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005425
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005427 callback
5428
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 @see WDI_Start
5430 @return Result of the function call
5431*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005432WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005433WDI_ConfigSTAReq
5434(
5435 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5436 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5437 void* pUserData
5438)
5439{
5440 WDI_EventInfoType wdiEventData;
5441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5442
5443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005444 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005445 ------------------------------------------------------------------------*/
5446 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5447 {
5448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5449 "WDI API call before module is initialized - Fail request");
5450
Jeff Johnsone7245742012-09-05 17:12:55 -07005451 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005452 }
5453
5454 /*------------------------------------------------------------------------
5455 Fill in Event data and post to the Main FSM
5456 ------------------------------------------------------------------------*/
5457 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005458 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5459 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5460 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 wdiEventData.pUserData = pUserData;
5462
5463 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5464
5465}/*WDI_ConfigSTAReq*/
5466
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005467 /**
5468 @brief WDI_UpdateChannelReq will be called when the upper MAC
5469 wants to update the channel list on change in country code.
5470
5471 In state BUSY this request will be queued. Request won't
5472 be allowed in any other state.
5473
5474 WDI_UpdateChannelReq must have been called.
5475
5476 @param wdiUpdateChannelReqParams: the updated channel parameters
5477 as specified by the Device Interface
5478
5479 wdiUpdateChannelRspCb: callback for passing back the
5480 response of the update channel operation received from
5481 the device
5482
5483 pUserData: user data will be passed back with the
5484 callback
5485
5486 @return Result of the function call
5487*/
5488WDI_Status
5489WDI_UpdateChannelReq
5490(
5491 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5492 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5493 void* pUserData
5494)
5495{
5496 WDI_EventInfoType wdiEventData = {{0}};
5497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5498
5499 /*------------------------------------------------------------------------
5500 Sanity Check
5501 ------------------------------------------------------------------------*/
5502 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5503 {
5504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5505 "WDI API call before module is initialized - Fail request");
5506
5507 return WDI_STATUS_E_NOT_ALLOWED;
5508 }
5509
5510 /*------------------------------------------------------------------------
5511 Fill in Event data and post to the Main FSM
5512 ------------------------------------------------------------------------*/
5513 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5514 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5515 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5516 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5517 wdiEventData.pUserData = pUserData;
5518
5519 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5520
5521}/*WDI_UpdateChannelReq*/
5522
Jeff Johnson295189b2012-06-20 16:38:30 -07005523/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005524 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 wants to change the state of an ongoing link. Upon the
5526 call of this API the WLAN DAL will pack and send a HAL
5527 Start message request message to the lower RIVA
5528 sub-system if DAL is in state STARTED.
5529
5530 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005532
5533 WDI_JoinStartReq must have been called.
5534
Jeff Johnsone7245742012-09-05 17:12:55 -07005535 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005536 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005537
Jeff Johnson295189b2012-06-20 16:38:30 -07005538 wdiSetLinkStateRspCb: callback for passing back the
5539 response of the set link state operation received from
5540 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005541
Jeff Johnson295189b2012-06-20 16:38:30 -07005542 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005543 callback
5544
Jeff Johnson295189b2012-06-20 16:38:30 -07005545 @see WDI_JoinStartReq
5546 @return Result of the function call
5547*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005548WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005549WDI_SetLinkStateReq
5550(
5551 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5552 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5553 void* pUserData
5554)
5555{
5556 WDI_EventInfoType wdiEventData;
5557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5558
5559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005560 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005561 ------------------------------------------------------------------------*/
5562 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5563 {
5564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5565 "WDI API call before module is initialized - Fail request");
5566
Jeff Johnsone7245742012-09-05 17:12:55 -07005567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005568 }
5569
5570 /*------------------------------------------------------------------------
5571 Fill in Event data and post to the Main FSM
5572 ------------------------------------------------------------------------*/
5573 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005574 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5575 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5576 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005577 wdiEventData.pUserData = pUserData;
5578
5579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5580
5581}/*WDI_SetLinkStateReq*/
5582
5583
5584/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005585 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005586 to get statistics (MIB counters) from the device. Upon
5587 the call of this API the WLAN DAL will pack and send a
5588 HAL Start request message to the lower RIVA sub-system
5589 if DAL is in state STARTED.
5590
5591 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005592 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005593
5594 WDI_Start must have been called.
5595
Jeff Johnsone7245742012-09-05 17:12:55 -07005596 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005597 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005598
Jeff Johnson295189b2012-06-20 16:38:30 -07005599 wdiGetStatsRspCb: callback for passing back the response
5600 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005601
Jeff Johnson295189b2012-06-20 16:38:30 -07005602 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005603 callback
5604
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 @see WDI_Start
5606 @return Result of the function call
5607*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005608WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005609WDI_GetStatsReq
5610(
5611 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5612 WDI_GetStatsRspCb wdiGetStatsRspCb,
5613 void* pUserData
5614)
5615{
5616 WDI_EventInfoType wdiEventData;
5617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5618
5619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005620 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005621 ------------------------------------------------------------------------*/
5622 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5623 {
5624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5625 "WDI API call before module is initialized - Fail request");
5626
Jeff Johnsone7245742012-09-05 17:12:55 -07005627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005628 }
5629
5630 /*------------------------------------------------------------------------
5631 Fill in Event data and post to the Main FSM
5632 ------------------------------------------------------------------------*/
5633 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005634 wdiEventData.pEventData = pwdiGetStatsReqParams;
5635 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5636 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 wdiEventData.pUserData = pUserData;
5638
5639 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5640
5641}/*WDI_GetStatsReq*/
5642
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005643#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005644/**
5645 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5646 to get roam rssi from the device. Upon
5647 the call of this API the WLAN DAL will pack and send a
5648 HAL Start request message to the lower RIVA sub-system
5649 if DAL is in state STARTED.
5650
5651 In state BUSY this request will be queued. Request won't
5652 be allowed in any other state.
5653
5654 WDI_Start must have been called.
5655
5656 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5657 specified by the Device Interface
5658
5659 wdiGetRoamRssiRspCb: callback for passing back the response
5660 of the get stats operation received from the device
5661
5662 pUserData: user data will be passed back with the
5663 callback
5664
5665 @see WDI_Start
5666 @return Result of the function call
5667*/
5668WDI_Status
5669WDI_GetRoamRssiReq
5670(
5671 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5672 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5673 void* pUserData
5674)
5675{
5676 WDI_EventInfoType wdiEventData;
5677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5678
5679 /*------------------------------------------------------------------------
5680 Sanity Check
5681 ------------------------------------------------------------------------*/
5682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5683 {
5684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5685 "WDI API call before module is initialized - Fail request");
5686
5687 return WDI_STATUS_E_NOT_ALLOWED;
5688 }
5689 /*------------------------------------------------------------------------
5690 Fill in Event data and post to the Main FSM
5691 ------------------------------------------------------------------------*/
5692 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5693 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5694 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5695 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5696 wdiEventData.pUserData = pUserData;
5697
5698 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5699
5700}/*WDI_GetRoamRssiReq*/
5701#endif
5702
Jeff Johnson295189b2012-06-20 16:38:30 -07005703
5704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005705 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005706 it wishes to change the configuration of the WLAN
5707 Device. Upon the call of this API the WLAN DAL will pack
5708 and send a HAL Update CFG request message to the lower
5709 RIVA sub-system if DAL is in state STARTED.
5710
5711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005713
5714 WDI_Start must have been called.
5715
Jeff Johnsone7245742012-09-05 17:12:55 -07005716 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005717 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005718
Jeff Johnson295189b2012-06-20 16:38:30 -07005719 wdiUpdateCfgsRspCb: callback for passing back the
5720 response of the update cfg operation received from the
5721 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005722
Jeff Johnson295189b2012-06-20 16:38:30 -07005723 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005724 callback
5725
Jeff Johnson295189b2012-06-20 16:38:30 -07005726 @see WDI_Start
5727 @return Result of the function call
5728*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005729WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005730WDI_UpdateCfgReq
5731(
5732 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5733 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5734 void* pUserData
5735)
5736{
5737 WDI_EventInfoType wdiEventData;
5738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5739
5740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005742 ------------------------------------------------------------------------*/
5743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5744 {
5745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5746 "WDI API call before module is initialized - Fail request");
5747
Jeff Johnsone7245742012-09-05 17:12:55 -07005748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 }
5750
5751 /*------------------------------------------------------------------------
5752 Fill in Event data and post to the Main FSM
5753 ------------------------------------------------------------------------*/
5754 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005755 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5756 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5757 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005758 wdiEventData.pUserData = pUserData;
5759
5760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5761
5762}/*WDI_UpdateCfgReq*/
5763
5764
5765
5766/**
5767 @brief WDI_AddBAReq will be called when the upper MAC has setup
5768 successfully a BA session and needs to notify the HW for
5769 the appropriate settings to take place. Upon the call of
5770 this API the WLAN DAL will pack and send a HAL Add BA
5771 request message to the lower RIVA sub-system if DAL is
5772 in state STARTED.
5773
5774 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005775 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005776
5777 WDI_PostAssocReq must have been called.
5778
5779 @param wdiAddBAReqParams: the add BA parameters as specified by
5780 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 wdiAddBARspCb: callback for passing back the response of
5783 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005786 callback
5787
Jeff Johnson295189b2012-06-20 16:38:30 -07005788 @see WDI_PostAssocReq
5789 @return Result of the function call
5790*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005791WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005792WDI_AddBAReq
5793(
5794 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5795 WDI_AddBARspCb wdiAddBARspCb,
5796 void* pUserData
5797)
5798{
5799 WDI_EventInfoType wdiEventData;
5800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5801
5802 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005804 ------------------------------------------------------------------------*/
5805 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5806 {
5807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5808 "WDI API call before module is initialized - Fail request");
5809
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 }
5812
5813 /*------------------------------------------------------------------------
5814 Fill in Event data and post to the Main FSM
5815 ------------------------------------------------------------------------*/
5816 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005817 wdiEventData.pEventData = pwdiAddBAReqParams;
5818 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5819 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 wdiEventData.pUserData = pUserData;
5821
5822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5823
5824}/*WDI_AddBAReq*/
5825
5826
5827/**
5828 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5829 successfully a BA session and needs to notify the HW for
5830 the appropriate settings to take place. Upon the call of
5831 this API the WLAN DAL will pack and send a HAL Add BA
5832 request message to the lower RIVA sub-system if DAL is
5833 in state STARTED.
5834
5835 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005836 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005837
5838 WDI_PostAssocReq must have been called.
5839
5840 @param wdiAddBAReqParams: the add BA parameters as specified by
5841 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005842
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 wdiAddBARspCb: callback for passing back the response of
5844 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005845
Jeff Johnson295189b2012-06-20 16:38:30 -07005846 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005847 callback
5848
Jeff Johnson295189b2012-06-20 16:38:30 -07005849 @see WDI_PostAssocReq
5850 @return Result of the function call
5851*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005852WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005853WDI_TriggerBAReq
5854(
5855 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5856 WDI_TriggerBARspCb wdiTriggerBARspCb,
5857 void* pUserData
5858)
5859{
5860 WDI_EventInfoType wdiEventData;
5861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5862
5863 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005864 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005865 ------------------------------------------------------------------------*/
5866 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5867 {
5868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5869 "WDI API call before module is initialized - Fail request");
5870
Jeff Johnsone7245742012-09-05 17:12:55 -07005871 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005872 }
5873
5874 /*------------------------------------------------------------------------
5875 Fill in Event data and post to the Main FSM
5876 ------------------------------------------------------------------------*/
5877 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005878 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5879 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5880 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005881 wdiEventData.pUserData = pUserData;
5882
5883 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5884
5885}/*WDI_AddBAReq*/
5886
5887/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005888 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005889 wishes to update any of the Beacon parameters used by HW.
5890 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5891 message to the lower RIVA sub-system if DAL is in state
5892 STARTED.
5893
5894 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005895 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005896
5897 WDI_PostAssocReq must have been called.
5898
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005901
Jeff Johnson295189b2012-06-20 16:38:30 -07005902 wdiUpdateBeaconParamsRspCb: callback for passing back the
5903 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005904
Jeff Johnson295189b2012-06-20 16:38:30 -07005905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005906 callback
5907
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 @see WDI_PostAssocReq
5909 @return Result of the function call
5910*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005911WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005912WDI_UpdateBeaconParamsReq
5913(
5914 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5915 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5916 void* pUserData
5917)
5918{
5919 WDI_EventInfoType wdiEventData;
5920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5921
5922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005924 ------------------------------------------------------------------------*/
5925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5926 {
5927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5928 "WDI API call before module is initialized - Fail request");
5929
Jeff Johnsone7245742012-09-05 17:12:55 -07005930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005931 }
5932
5933 /*------------------------------------------------------------------------
5934 Fill in Event data and post to the Main FSM
5935 ------------------------------------------------------------------------*/
5936 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005937 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5938 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5939 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005940 wdiEventData.pUserData = pUserData;
5941
5942 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5943
5944}/*WDI_UpdateBeaconParamsReq*/
5945
5946/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005947 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005948 wishes to update the Beacon template used by HW.
5949 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5950 message to the lower RIVA sub-system if DAL is in state
5951 STARTED.
5952
5953 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005954 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005955
5956 WDI_PostAssocReq must have been called.
5957
Jeff Johnsone7245742012-09-05 17:12:55 -07005958 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005959 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005960
Jeff Johnson295189b2012-06-20 16:38:30 -07005961 wdiSendBeaconParamsRspCb: callback for passing back the
5962 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005963
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005965 callback
5966
Jeff Johnson295189b2012-06-20 16:38:30 -07005967 @see WDI_PostAssocReq
5968 @return Result of the function call
5969*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005971WDI_SendBeaconParamsReq
5972(
5973 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5974 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5975 void* pUserData
5976)
5977{
5978 WDI_EventInfoType wdiEventData;
5979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5980
5981 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005982 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005983 ------------------------------------------------------------------------*/
5984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5985 {
5986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5987 "WDI API call before module is initialized - Fail request");
5988
Jeff Johnsone7245742012-09-05 17:12:55 -07005989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005990 }
5991
5992 /*------------------------------------------------------------------------
5993 Fill in Event data and post to the Main FSM
5994 ------------------------------------------------------------------------*/
5995 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005996 wdiEventData.pEventData = pwdiSendBeaconParams;
5997 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5998 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005999 wdiEventData.pUserData = pUserData;
6000
6001 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6002
6003}/*WDI_SendBeaconParamsReq*/
6004
6005/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006006 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006007 upper MAC wants to update the probe response template to
6008 be transmitted as Soft AP
6009 Upon the call of this API the WLAN DAL will
6010 pack and send the probe rsp template message to the
6011 lower RIVA sub-system if DAL is in state STARTED.
6012
6013 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006014 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006015
6016
Jeff Johnsone7245742012-09-05 17:12:55 -07006017 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006018 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006019
Jeff Johnson295189b2012-06-20 16:38:30 -07006020 wdiSendBeaconParamsRspCb: callback for passing back the
6021 response of the Send Beacon Params operation received
6022 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006023
Jeff Johnson295189b2012-06-20 16:38:30 -07006024 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006025 callback
6026
Jeff Johnson295189b2012-06-20 16:38:30 -07006027 @see WDI_AddBAReq
6028 @return Result of the function call
6029*/
6030
Jeff Johnsone7245742012-09-05 17:12:55 -07006031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006032WDI_UpdateProbeRspTemplateReq
6033(
6034 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6035 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6036 void* pUserData
6037)
6038{
6039 WDI_EventInfoType wdiEventData;
6040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6041
6042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006044 ------------------------------------------------------------------------*/
6045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6046 {
6047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6048 "WDI API call before module is initialized - Fail request");
6049
Jeff Johnsone7245742012-09-05 17:12:55 -07006050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006051 }
6052
6053 /*------------------------------------------------------------------------
6054 Fill in Event data and post to the Main FSM
6055 ------------------------------------------------------------------------*/
6056 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006057 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6058 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6059 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006060 wdiEventData.pUserData = pUserData;
6061
6062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6063
6064}/*WDI_UpdateProbeRspTemplateReq*/
6065
6066/**
6067 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6068 to the NV memory.
6069
6070
6071 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6072 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006073
Jeff Johnson295189b2012-06-20 16:38:30 -07006074 wdiNvDownloadRspCb: callback for passing back the response of
6075 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006076
Jeff Johnson295189b2012-06-20 16:38:30 -07006077 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006078 callback
6079
Jeff Johnson295189b2012-06-20 16:38:30 -07006080 @see WDI_PostAssocReq
6081 @return Result of the function call
6082*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006083WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006084WDI_NvDownloadReq
6085(
6086 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6087 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6088 void* pUserData
6089)
6090{
6091 WDI_EventInfoType wdiEventData;
6092
6093 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006094 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006095 ------------------------------------------------------------------------*/
6096 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6097 {
6098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6099 "WDI API call before module is initialized - Fail request");
6100
Jeff Johnsone7245742012-09-05 17:12:55 -07006101 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006102 }
6103
6104 /*------------------------------------------------------------------------
6105 Fill in Event data and post to the Main FSM
6106 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006107 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6108 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6109 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6110 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006111 wdiEventData.pUserData = pUserData;
6112
6113 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6114
6115}/*WDI_NVDownloadReq*/
6116
Jeff Johnson295189b2012-06-20 16:38:30 -07006117/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006118 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006119 upper MAC wants to send Notice of Absence
6120 Upon the call of this API the WLAN DAL will
6121 pack and send the probe rsp template message to the
6122 lower RIVA sub-system if DAL is in state STARTED.
6123
6124 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006125 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006126
6127
Jeff Johnsone7245742012-09-05 17:12:55 -07006128 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006130
Jeff Johnson295189b2012-06-20 16:38:30 -07006131 wdiSendBeaconParamsRspCb: callback for passing back the
6132 response of the Send Beacon Params operation received
6133 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006134
Jeff Johnson295189b2012-06-20 16:38:30 -07006135 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006136 callback
6137
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 @see WDI_AddBAReq
6139 @return Result of the function call
6140*/
6141WDI_Status
6142WDI_SetP2PGONOAReq
6143(
6144 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6145 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6146 void* pUserData
6147)
6148{
6149 WDI_EventInfoType wdiEventData;
6150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6151
6152 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006153 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006154 ------------------------------------------------------------------------*/
6155 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6156 {
6157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6158 "WDI API call before module is initialized - Fail request");
6159
Jeff Johnsone7245742012-09-05 17:12:55 -07006160 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006161 }
6162
6163 /*------------------------------------------------------------------------
6164 Fill in Event data and post to the Main FSM
6165 ------------------------------------------------------------------------*/
6166 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006167 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6168 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6169 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006170 wdiEventData.pUserData = pUserData;
6171
6172 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6173
6174}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006175
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306176#ifdef FEATURE_WLAN_TDLS
6177/**
6178 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6179 upper MAC wants to send TDLS Link Establish Request Parameters
6180 Upon the call of this API the WLAN DAL will
6181 pack and send the TDLS Link Establish Request message to the
6182 lower RIVA sub-system if DAL is in state STARTED.
6183
6184 In state BUSY this request will be queued. Request won't
6185 be allowed in any other state.
6186
6187
6188 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6189 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6190
6191 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6192 response of the TDLS Link Establish request received
6193 from the device
6194
6195 pUserData: user data will be passed back with the
6196 callback
6197
6198 @see
6199 @return Result of the function call
6200*/
6201WDI_Status
6202WDI_SetTDLSLinkEstablishReq
6203(
6204 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6205 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6206 void* pUserData
6207)
6208{
6209 WDI_EventInfoType wdiEventData;
6210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6211
6212 /*------------------------------------------------------------------------
6213 Sanity Check
6214 ------------------------------------------------------------------------*/
6215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6216 {
6217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6218 "WDI API call before module is initialized - Fail request");
6219
6220 return WDI_STATUS_E_NOT_ALLOWED;
6221 }
6222
6223 /*------------------------------------------------------------------------
6224 Fill in Event data and post to the Main FSM
6225 ------------------------------------------------------------------------*/
6226 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6227 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6228 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6229 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6230 wdiEventData.pUserData = pUserData;
6231
6232 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6233
6234}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306235
6236//tdlsoffchan
6237/**
6238 @brief WDI_SetTDLSChanSwitchReq will be called when the
6239 upper MAC wants to send TDLS Chan Switch Request Parameters
6240 Upon the call of this API the WLAN DAL will
6241 pack and send the TDLS Link Establish Request message to the
6242 lower RIVA sub-system if DAL is in state STARTED.
6243
6244 In state BUSY this request will be queued. Request won't
6245 be allowed in any other state.
6246
6247
6248 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6249 for Link Establishment (Used for TDLS Off Channel ...)
6250
6251 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6252 response of the TDLS Chan Switch request received
6253 from the device
6254
6255 pUserData: user data will be passed back with the
6256 callback
6257
6258 @see
6259 @return Result of the function call
6260*/
6261WDI_Status
6262WDI_SetTDLSChanSwitchReq
6263(
6264 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6265 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6266 void* pUserData
6267)
6268{
6269 WDI_EventInfoType wdiEventData;
6270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6271
6272 /*------------------------------------------------------------------------
6273 Sanity Check
6274 ------------------------------------------------------------------------*/
6275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6276 {
6277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6278 "WDI API call before module is initialized - Fail request");
6279
6280 return WDI_STATUS_E_NOT_ALLOWED;
6281 }
6282
6283 /*------------------------------------------------------------------------
6284 Fill in Event data and post to the Main FSM
6285 ------------------------------------------------------------------------*/
6286 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6287 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6288 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6289 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6290 wdiEventData.pUserData = pUserData;
6291
6292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6293
6294}/*WDI_SetTDLSChanSwitchReq*/
6295
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306296#endif
6297
Jeff Johnson295189b2012-06-20 16:38:30 -07006298/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006299 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006300 UMAC wanted to add STA self while opening any new session
6301 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006302 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006303
6304
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006307
Jeff Johnson295189b2012-06-20 16:38:30 -07006308 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006309 callback
6310
6311 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006312 @return Result of the function call
6313*/
6314WDI_Status
6315WDI_AddSTASelfReq
6316(
6317 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6318 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6319 void* pUserData
6320)
6321{
6322 WDI_EventInfoType wdiEventData;
6323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6324
6325 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006326 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006327 ------------------------------------------------------------------------*/
6328 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6329 {
6330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6331 "WDI API call before module is initialized - Fail request");
6332
Jeff Johnsone7245742012-09-05 17:12:55 -07006333 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006334 }
6335
6336 /*------------------------------------------------------------------------
6337 Fill in Event data and post to the Main FSM
6338 ------------------------------------------------------------------------*/
6339 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006340 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6341 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6342 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006343 wdiEventData.pUserData = pUserData;
6344
6345 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6346
6347}/*WDI_AddSTASelfReq*/
6348
6349
Jeff Johnsone7245742012-09-05 17:12:55 -07006350#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006351/**
6352 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6353 the device of a successful add TSpec negotiation. HW
6354 needs to receive the TSpec Info from the UMAC in order
6355 to configure properly the QoS data traffic. Upon the
6356 call of this API the WLAN DAL will pack and send a HAL
6357 Add TS request message to the lower RIVA sub-system if
6358 DAL is in state STARTED.
6359
6360 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006362
6363 WDI_PostAssocReq must have been called.
6364
6365 @param wdiAddTsReqParams: the add TS parameters as specified by
6366 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006367
Jeff Johnson295189b2012-06-20 16:38:30 -07006368 wdiAddTsRspCb: callback for passing back the response of
6369 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006370
Jeff Johnson295189b2012-06-20 16:38:30 -07006371 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006372 callback
6373
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 @see WDI_PostAssocReq
6375 @return Result of the function call
6376*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006377WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006378WDI_AggrAddTSReq
6379(
6380 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6381 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6382 void* pUserData
6383)
6384{
6385 WDI_EventInfoType wdiEventData;
6386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6387
6388 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006390 ------------------------------------------------------------------------*/
6391 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6392 {
6393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6394 "WDI API call before module is initialized - Fail request");
6395
Jeff Johnsone7245742012-09-05 17:12:55 -07006396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006397 }
6398
6399 /*------------------------------------------------------------------------
6400 Fill in Event data and post to the Main FSM
6401 ------------------------------------------------------------------------*/
6402 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006403 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6404 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6405 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 wdiEventData.pUserData = pUserData;
6407
6408 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6409
6410}/*WDI_AggrAddTSReq*/
6411
6412#endif /* WLAN_FEATURE_VOWIFI_11R */
6413
Jeff Johnson295189b2012-06-20 16:38:30 -07006414/**
6415 @brief WDI_FTMCommandReq
6416 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006417
6418 @param ftmCommandReq: FTM Command Body
6419 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006421
Jeff Johnson295189b2012-06-20 16:38:30 -07006422 @see
6423 @return Result of the function call
6424*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006426WDI_FTMCommandReq
6427(
6428 WDI_FTMCommandReqType *ftmCommandReq,
6429 WDI_FTMCommandRspCb ftmCommandRspCb,
6430 void *pUserData
6431)
6432{
6433 WDI_EventInfoType wdiEventData;
6434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6435
6436 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006437 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 ------------------------------------------------------------------------*/
6439 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6440 {
6441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6442 "WDI API call before module is initialized - Fail request");
6443
Jeff Johnsone7245742012-09-05 17:12:55 -07006444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006445 }
6446
6447 /*------------------------------------------------------------------------
6448 Fill in Event data and post to the Main FSM
6449 ------------------------------------------------------------------------*/
6450 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6451 wdiEventData.pEventData = (void *)ftmCommandReq;
6452 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6453 wdiEventData.pCBfnc = ftmCommandRspCb;
6454 wdiEventData.pUserData = pUserData;
6455
6456 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6457}
Jeff Johnson295189b2012-06-20 16:38:30 -07006458/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006459 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006460
6461 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006462 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006463
6464
6465 @param pwdiResumeReqParams: as specified by
6466 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006467
Jeff Johnson295189b2012-06-20 16:38:30 -07006468 wdiResumeReqRspCb: callback for passing back the response of
6469 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006470
Jeff Johnson295189b2012-06-20 16:38:30 -07006471 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006472 callback
6473
6474 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006475 @return Result of the function call
6476*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006477WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006478WDI_HostResumeReq
6479(
6480 WDI_ResumeParamsType* pwdiResumeReqParams,
6481 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6482 void* pUserData
6483)
6484{
6485 WDI_EventInfoType wdiEventData;
6486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6487
6488 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006489 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006490 ------------------------------------------------------------------------*/
6491 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6492 {
6493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6494 "WDI API call before module is initialized - Fail request");
6495
Jeff Johnsone7245742012-09-05 17:12:55 -07006496 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006497 }
6498
6499 /*------------------------------------------------------------------------
6500 Fill in Event data and post to the Main FSM
6501 ------------------------------------------------------------------------*/
6502 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006503 wdiEventData.pEventData = pwdiResumeReqParams;
6504 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6505 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 wdiEventData.pUserData = pUserData;
6507
6508 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6509
6510}/*WDI_HostResumeReq*/
6511
6512/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006513 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006514
6515 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006517
6518
6519 @param pwdiDelStaSelfReqParams: as specified by
6520 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006521
Jeff Johnson295189b2012-06-20 16:38:30 -07006522 wdiDelStaSelfRspCb: callback for passing back the response of
6523 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006524
Jeff Johnson295189b2012-06-20 16:38:30 -07006525 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006526 callback
6527
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 @see WDI_PostAssocReq
6529 @return Result of the function call
6530*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006531WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006532WDI_DelSTASelfReq
6533(
6534 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6535 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6536 void* pUserData
6537)
6538{
6539 WDI_EventInfoType wdiEventData;
6540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6541
6542 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006543 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 ------------------------------------------------------------------------*/
6545 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6546 {
6547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6548 "WDI API call before module is initialized - Fail request");
6549
Jeff Johnsone7245742012-09-05 17:12:55 -07006550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006551 }
6552
6553 /*------------------------------------------------------------------------
6554 Fill in Event data and post to the Main FSM
6555 ------------------------------------------------------------------------*/
6556 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006557 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6558 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6559 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006560 wdiEventData.pUserData = pUserData;
6561
6562 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6563
6564}/*WDI_AggrAddTSReq*/
6565
6566/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006567 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6568 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006569 Upon the call of this API the WLAN DAL will pack
6570 and send a HAL Set Tx Per Tracking request message to the
6571 lower RIVA sub-system if DAL is in state STARTED.
6572
6573 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006575
Jeff Johnsone7245742012-09-05 17:12:55 -07006576 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006577 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006578
Jeff Johnson295189b2012-06-20 16:38:30 -07006579 pwdiSetTxPerTrackingRspCb: callback for passing back the
6580 response of the set Tx PER Tracking configurations operation received
6581 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006582
Jeff Johnson295189b2012-06-20 16:38:30 -07006583 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006584 callback
6585
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 @return Result of the function call
6587*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006588WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006589WDI_SetTxPerTrackingReq
6590(
6591 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6592 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6593 void* pUserData
6594)
6595{
6596 WDI_EventInfoType wdiEventData;
6597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6598
6599 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006600 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006601 ------------------------------------------------------------------------*/
6602 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6603 {
6604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6605 "WDI API call before module is initialized - Fail request");
6606
Jeff Johnsone7245742012-09-05 17:12:55 -07006607 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 }
6609
6610 /*------------------------------------------------------------------------
6611 Fill in Event data and post to the Main FSM
6612 ------------------------------------------------------------------------*/
6613 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006614 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006615 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006616 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 wdiEventData.pUserData = pUserData;
6618
6619 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6620
6621}/*WDI_SetTxPerTrackingReq*/
6622
6623/**
6624 @brief WDI_SetTmLevelReq
6625 If HW Thermal condition changed, driver should react based on new
6626 HW thermal condition.
6627
6628 @param pwdiSetTmLevelReq: New thermal condition information
6629
6630 pwdiSetTmLevelRspCb: callback
6631
6632 usrData: user data will be passed back with the
6633 callback
6634
6635 @return Result of the function call
6636*/
6637WDI_Status
6638WDI_SetTmLevelReq
6639(
6640 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6641 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6642 void *usrData
6643)
6644{
6645 WDI_EventInfoType wdiEventData;
6646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6647
6648 /*------------------------------------------------------------------------
6649 Sanity Check
6650 ------------------------------------------------------------------------*/
6651 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6652 {
6653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6654 "WDI API call before module is initialized - Fail request");
6655
6656 return WDI_STATUS_E_NOT_ALLOWED;
6657 }
6658
6659 /*------------------------------------------------------------------------
6660 Fill in Event data and post to the Main FSM
6661 ------------------------------------------------------------------------*/
6662 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6663 wdiEventData.pEventData = pwdiSetTmLevelReq;
6664 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6665 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6666 wdiEventData.pUserData = usrData;
6667
6668 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6669}
6670
6671/**
6672 @brief WDI_HostSuspendInd
6673
6674 Suspend Indication from the upper layer will be sent
6675 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006676
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006678
6679 @see
6680
Jeff Johnson295189b2012-06-20 16:38:30 -07006681 @return Status of the request
6682*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006683WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006684WDI_HostSuspendInd
6685(
6686 WDI_SuspendParamsType* pwdiSuspendIndParams
6687)
6688{
6689
6690 WDI_EventInfoType wdiEventData;
6691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6692
6693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006694 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 ------------------------------------------------------------------------*/
6696 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6697 {
6698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6699 "WDI API call before module is initialized - Fail request");
6700
Jeff Johnsone7245742012-09-05 17:12:55 -07006701 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 }
6703
6704 /*------------------------------------------------------------------------
6705 Fill in Event data and post to the Main FSM
6706 ------------------------------------------------------------------------*/
6707 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006708 wdiEventData.pEventData = pwdiSuspendIndParams;
6709 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6710 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006711 wdiEventData.pUserData = NULL;
6712
6713 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6714
6715}/*WDI_HostSuspendInd*/
6716
6717/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006718 @brief WDI_TrafficStatsInd
6719 Traffic Stats from the upper layer will be sent
6720 down to HAL
6721
6722 @param WDI_TrafficStatsIndType
6723
6724 @see
6725
6726 @return Status of the request
6727*/
6728WDI_Status
6729WDI_TrafficStatsInd
6730(
6731 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6732)
6733{
6734
6735 WDI_EventInfoType wdiEventData;
6736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6737
6738 /*------------------------------------------------------------------------
6739 Sanity Check
6740 ------------------------------------------------------------------------*/
6741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6742 {
6743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6744 "WDI API call before module is initialized - Fail request");
6745
6746 return WDI_STATUS_E_NOT_ALLOWED;
6747 }
6748
6749 /*------------------------------------------------------------------------
6750 Fill in Event data and post to the Main FSM
6751 ------------------------------------------------------------------------*/
6752 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6753 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6754 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6755 wdiEventData.pCBfnc = NULL;
6756 wdiEventData.pUserData = NULL;
6757
6758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6759
6760}/*WDI_TrafficStatsInd*/
6761
Chet Lanctot186b5732013-03-18 10:26:30 -07006762#ifdef WLAN_FEATURE_11W
6763/**
6764 @brief WDI_ExcludeUnencryptedInd
6765 Register with HAL to receive/drop unencrypted frames
6766
6767 @param WDI_ExcludeUnencryptIndType
6768
6769 @see
6770
6771 @return Status of the request
6772*/
6773WDI_Status
6774WDI_ExcludeUnencryptedInd
6775(
6776 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6777)
6778{
6779
6780 WDI_EventInfoType wdiEventData;
6781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6782
6783 /*------------------------------------------------------------------------
6784 Sanity Check
6785 ------------------------------------------------------------------------*/
6786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6787 {
6788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6789 "WDI API call before module is initialized - Fail request");
6790
6791 return WDI_STATUS_E_NOT_ALLOWED;
6792 }
6793
6794 /*------------------------------------------------------------------------
6795 Fill in Event data and post to the Main FSM
6796 ------------------------------------------------------------------------*/
6797 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6798 wdiEventData.pEventData = pWdiExcUnencParams;
6799 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6800 wdiEventData.pCBfnc = NULL;
6801 wdiEventData.pUserData = NULL;
6802
6803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6804
6805}/*WDI_TrafficStatsInd*/
6806#endif
6807
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006808/**
Yue Mab9c86f42013-08-14 15:59:08 -07006809 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6810
6811 @param addPeriodicTxPtrnParams: Add Pattern parameters
6812
6813 @see
6814
6815 @return Status of the request
6816*/
6817WDI_Status
6818WDI_AddPeriodicTxPtrnInd
6819(
6820 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6821)
6822{
6823 WDI_EventInfoType wdiEventData;
6824
6825 /*-------------------------------------------------------------------------
6826 Sanity Check
6827 ------------------------------------------------------------------------*/
6828 if (eWLAN_PAL_FALSE == gWDIInitialized)
6829 {
6830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6831 "WDI API call before module is initialized - Fail request!");
6832
6833 return WDI_STATUS_E_NOT_ALLOWED;
6834 }
6835
6836 /*-------------------------------------------------------------------------
6837 Fill in Event data and post to the Main FSM
6838 ------------------------------------------------------------------------*/
6839 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6840 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6841 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6842 wdiEventData.pCBfnc = NULL;
6843 wdiEventData.pUserData = NULL;
6844
6845 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6846}
6847
6848/**
6849 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6850
6851 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6852
6853 @see
6854
6855 @return Status of the request
6856*/
6857WDI_Status
6858WDI_DelPeriodicTxPtrnInd
6859(
6860 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6861)
6862{
6863 WDI_EventInfoType wdiEventData;
6864
6865 /*-------------------------------------------------------------------------
6866 Sanity Check
6867 ------------------------------------------------------------------------*/
6868 if (eWLAN_PAL_FALSE == gWDIInitialized)
6869 {
6870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6871 "WDI API call before module is initialized - Fail request!");
6872
6873 return WDI_STATUS_E_NOT_ALLOWED;
6874 }
6875
6876 /*-------------------------------------------------------------------------
6877 Fill in Event data and post to the Main FSM
6878 ------------------------------------------------------------------------*/
6879 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6880 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6881 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6882 wdiEventData.pCBfnc = NULL;
6883 wdiEventData.pUserData = NULL;
6884
6885 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6886}
6887
6888/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006889 @brief WDI_HALDumpCmdReq
6890 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006891
6892 @param halDumpCmdReqParams: Hal Dump Command Body
6893 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006894 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006895
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 @see
6897 @return Result of the function call
6898*/
6899WDI_Status WDI_HALDumpCmdReq
6900(
6901 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6902 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6903 void *pUserData
6904)
6905{
6906 WDI_EventInfoType wdiEventData;
6907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6908
6909 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006910 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 ------------------------------------------------------------------------*/
6912 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6913 {
6914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6915 "WDI API call before module is initialized - Fail request");
6916
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918 }
6919
6920 /*------------------------------------------------------------------------
6921 Fill in Event data and post to the Main FSM
6922 ------------------------------------------------------------------------*/
6923 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6924 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6925 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6926 wdiEventData.pCBfnc = halDumpCmdRspCb;
6927 wdiEventData.pUserData = pUserData;
6928
6929 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6930}
6931
Jeff Johnsone7245742012-09-05 17:12:55 -07006932/*============================================================================
6933
Jeff Johnson295189b2012-06-20 16:38:30 -07006934 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006935
Jeff Johnson295189b2012-06-20 16:38:30 -07006936 ============================================================================*/
6937
6938/**
6939 @brief Main FSM Start function for all states except BUSY
6940
Jeff Johnsone7245742012-09-05 17:12:55 -07006941
6942 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 wdiEV: event posted to the main DAL FSM
6944 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006945 structure
6946
Jeff Johnson295189b2012-06-20 16:38:30 -07006947 @see
6948 @return Result of the function call
6949*/
6950WDI_Status
6951WDI_PostMainEvent
6952(
Jeff Johnsone7245742012-09-05 17:12:55 -07006953 WDI_ControlBlockType* pWDICtx,
6954 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006955 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006956)
6957{
Jeff Johnsone7245742012-09-05 17:12:55 -07006958 WDI_Status wdiStatus;
6959 WDI_MainFuncType pfnWDIMainEvHdlr;
6960 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05306961 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6963
6964 /*-------------------------------------------------------------------------
6965 Sanity check
6966 -------------------------------------------------------------------------*/
6967 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6968 ( wdiEV >= WDI_MAX_EVENT ))
6969 {
6970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6971 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6972 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006974 }
6975
6976 /*Access to the global state must be locked */
6977 wpalMutexAcquire(&pWDICtx->wptMutex);
6978
6979 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006980 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006981
6982 wdiOldState = pWDICtx->uGlobalState;
6983
6984 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6986 response comes from CCPU for the request sent by host:
6987 the WDI global state will be in WDI_BUSY_ST already, so do not set it to BUSY again.
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 This state will be set to WDI_STARTED_ST in WDI_MainRsp, if it is a expected response.
Jeff Johnsone7245742012-09-05 17:12:55 -07006989 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006990 CCPU:
6991 don't change the state */
6992 if ( WDI_RESPONSE_EVENT != wdiEV)
6993 {
6994 /*Transition to BUSY State - the request is now being processed by the FSM,
6995 if the request fails we shall transition back to the old state, if not
6996 the request will manage its own state transition*/
6997 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6998 }
6999 /* If the state function associated with the EV is NULL it means that this
7000 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007001 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007002 {
7003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007006 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007007 }
7008 else
7009 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307010 if (!(failCnt & 0xF))
7011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007012 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007013 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307014 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007015 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007016 }
7017
7018 /* If a request handles itself well it will end up in a success or in a
7019 pending
7020 Success - means that the request was processed and the proper state
7021 transition already occurred or will occur when the resp is received
7022 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007023
Jeff Johnson295189b2012-06-20 16:38:30 -07007024 Pending - means the request could not be processed at this moment in time
7025 because the FSM was already busy so no state transition or dequeueing
7026 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007027
Jeff Johnson295189b2012-06-20 16:38:30 -07007028 Success for synchronous case means that the transition may occur and
7029 processing of pending requests may continue - so it should go through
7030 and restores the state and continue processing queued requests*/
7031 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7032 ( WDI_STATUS_PENDING != wdiStatus ))
7033 {
7034 if ( WDI_RESPONSE_EVENT != wdiEV)
7035 {
7036 /*The request has failed or could not be processed - transition back to
7037 the old state - check to see if anything was queued and try to execute
7038 The dequeue logic should post a message to a thread and return - no
7039 actual processing can occur */
7040 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7041 }
7042 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007043
Jeff Johnson295189b2012-06-20 16:38:30 -07007044 }
7045
7046 /* we have completed processing the event */
7047 wpalMutexRelease(&pWDICtx->wptMutex);
7048
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007050
7051}/*WDI_PostMainEvent*/
7052
7053
7054/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007055 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007056--------------------------------------------------------------------------*/
7057/**
7058 @brief Main FSM Start function for all states except BUSY
7059
Jeff Johnsone7245742012-09-05 17:12:55 -07007060
7061 @param pWDICtx: pointer to the WLAN DAL context
7062 pEventData: pointer to the event information structure
7063
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 @see
7065 @return Result of the function call
7066*/
7067WDI_Status
7068WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007069(
Jeff Johnson295189b2012-06-20 16:38:30 -07007070 WDI_ControlBlockType* pWDICtx,
7071 WDI_EventInfoType* pEventData
7072)
7073{
7074
7075 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007076 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007077 ----------------------------------------------------------------------*/
7078 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7079 {
7080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007081 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 pWDICtx, pEventData);
7083 return WDI_STATUS_E_FAILURE;
7084 }
7085
7086 wpalMutexAcquire(&pWDICtx->wptMutex);
7087
7088 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007089 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007090 ----------------------------------------------------------------------*/
7091 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7092 {
7093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7094 "Control Transport not yet Open - queueing the request");
7095
7096 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007097 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007098
7099 wpalMutexRelease(&pWDICtx->wptMutex);
7100 return WDI_STATUS_PENDING;
7101 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007102
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 wpalMutexRelease(&pWDICtx->wptMutex);
7104
7105 /*Return Success*/
7106 return WDI_ProcessRequest( pWDICtx, pEventData );
7107
7108}/*WDI_MainStart*/
7109
7110/**
7111 @brief Main FSM Response function for state INIT
7112
Jeff Johnsone7245742012-09-05 17:12:55 -07007113
7114 @param pWDICtx: pointer to the WLAN DAL context
7115 pEventData: pointer to the event information structure
7116
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 @see
7118 @return Result of the function call
7119*/
7120WDI_Status
7121WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007122(
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 WDI_ControlBlockType* pWDICtx,
7124 WDI_EventInfoType* pEventData
7125)
7126{
7127 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007128 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007129 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007130 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007131
7132 /*Return Success*/
7133 return WDI_STATUS_E_NOT_ALLOWED;
7134}/* WDI_MainRspInit */
7135
7136/**
7137 @brief Main FSM Close function for all states except BUSY
7138
Jeff Johnsone7245742012-09-05 17:12:55 -07007139
7140 @param pWDICtx: pointer to the WLAN DAL context
7141 pEventData: pointer to the event information structure
7142
Jeff Johnson295189b2012-06-20 16:38:30 -07007143 @see
7144 @return Result of the function call
7145*/
7146WDI_Status
7147WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007148(
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 WDI_ControlBlockType* pWDICtx,
7150 WDI_EventInfoType* pEventData
7151)
7152{
7153
7154 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007155 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 ----------------------------------------------------------------------*/
7157 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7158 {
7159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007160 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 pWDICtx, pEventData);
7162 return WDI_STATUS_E_FAILURE;
7163 }
7164
7165 /*Return Success*/
7166 return WDI_ProcessRequest( pWDICtx, pEventData );
7167
7168}/*WDI_MainClose*/
7169/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007170 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007171--------------------------------------------------------------------------*/
7172/**
7173 @brief Main FSM Start function for state STARTED
7174
Jeff Johnsone7245742012-09-05 17:12:55 -07007175
7176 @param pWDICtx: pointer to the WLAN DAL context
7177 pEventData: pointer to the event information structure
7178
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 @see
7180 @return Result of the function call
7181*/
7182WDI_Status
7183WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007184(
Jeff Johnson295189b2012-06-20 16:38:30 -07007185 WDI_ControlBlockType* pWDICtx,
7186 WDI_EventInfoType* pEventData
7187)
7188{
7189 WDI_StartRspCb wdiStartRspCb = NULL;
7190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7191
7192 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007193 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007194 ----------------------------------------------------------------------*/
7195 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7196 {
7197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007198 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007199 pWDICtx, pEventData);
7200 return WDI_STATUS_E_FAILURE;
7201 }
7202
7203 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007204 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007205 ----------------------------------------------------------------------*/
7206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007207 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007208
7209 wpalMutexAcquire(&pWDICtx->wptMutex);
7210
7211 /*Transition back to started because the post function transitioned us to
7212 busy*/
7213 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7214
7215 /*Check to see if any request is pending*/
7216 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007217
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 wpalMutexRelease(&pWDICtx->wptMutex);
7219
7220 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007221 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7222
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307224 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007225
7226 /*Return Success*/
7227 return WDI_STATUS_SUCCESS;
7228
7229}/*WDI_MainStartStarted*/
7230
7231/**
7232 @brief Main FSM Stop function for state STARTED
7233
Jeff Johnsone7245742012-09-05 17:12:55 -07007234
7235 @param pWDICtx: pointer to the WLAN DAL context
7236 pEventData: pointer to the event information structure
7237
Jeff Johnson295189b2012-06-20 16:38:30 -07007238 @see
7239 @return Result of the function call
7240*/
7241WDI_Status
7242WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007243(
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 WDI_ControlBlockType* pWDICtx,
7245 WDI_EventInfoType* pEventData
7246)
7247{
7248 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 ----------------------------------------------------------------------*/
7251 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7252 {
7253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007254 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 pWDICtx, pEventData);
7256 return WDI_STATUS_E_FAILURE;
7257 }
7258
7259 /*State at this point is BUSY - because we enter this state before posting
7260 an event to the FSM in order to prevent potential race conditions*/
7261
7262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7263 "Processing stop request in FSM");
7264
7265 /*Return Success*/
7266 return WDI_ProcessRequest( pWDICtx, pEventData );
7267
7268}/*WDI_MainStopStarted*/
7269/**
7270 @brief Main FSM Request function for state started
7271
Jeff Johnsone7245742012-09-05 17:12:55 -07007272
7273 @param pWDICtx: pointer to the WLAN DAL context
7274 pEventData: pointer to the event information structure
7275
Jeff Johnson295189b2012-06-20 16:38:30 -07007276 @see
7277 @return Result of the function call
7278*/
7279WDI_Status
7280WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007281(
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 WDI_ControlBlockType* pWDICtx,
7283 WDI_EventInfoType* pEventData
7284)
7285{
7286
7287 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 ----------------------------------------------------------------------*/
7290 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7291 {
7292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007293 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 pWDICtx, pEventData);
7295 return WDI_STATUS_E_FAILURE;
7296 }
7297
7298 /*State at this point is BUSY - because we enter this state before posting
7299 an event to the FSM in order to prevent potential race conditions*/
7300
7301 /*Return Success*/
7302 return WDI_ProcessRequest( pWDICtx, pEventData );
7303
7304}/*WDI_MainReqStarted*/
7305
7306/**
7307 @brief Main FSM Response function for all states except INIT
7308
Jeff Johnsone7245742012-09-05 17:12:55 -07007309
7310 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007312
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 @see
7314 @return Result of the function call
7315*/
7316WDI_Status
7317WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007318(
Jeff Johnson295189b2012-06-20 16:38:30 -07007319 WDI_ControlBlockType* pWDICtx,
7320 WDI_EventInfoType* pEventData
7321)
7322{
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 wpt_boolean expectedResponse;
7325
7326 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007327 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007328 ----------------------------------------------------------------------*/
7329 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7330 {
7331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007332 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 pWDICtx, pEventData);
7334 return WDI_STATUS_E_FAILURE;
7335 }
7336
7337 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7338 {
7339 /* we received an expected response */
7340 expectedResponse = eWLAN_PAL_TRUE;
7341
7342 /*We expect that we will transition to started after this processing*/
7343 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7344
7345 /* we are no longer expecting a response */
7346 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7347 }
7348 else
7349 {
7350 /* we received an indication or unexpected response */
7351 expectedResponse = eWLAN_PAL_FALSE;
7352 /* for indications no need to update state from what it is right
7353 now, unless it explicitly does it in the indication handler (say
7354 for device failure ind) */
7355 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7356 }
7357
7358 /*Process the response and indication */
7359 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7360
7361 /*Lock the CB as we are about to do a state transition*/
7362 wpalMutexAcquire(&pWDICtx->wptMutex);
7363
7364 /*Transition to the expected state after the response processing
7365 - this should always be started state with the following exceptions:
7366 1. processing of a failed start response
7367 2. device failure detected while processing response
7368 3. stop response received*/
7369 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007370
Jeff Johnson295189b2012-06-20 16:38:30 -07007371 /*Dequeue request that may have been queued while we were waiting for the
7372 response */
7373 if ( expectedResponse )
7374 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 }
7377
7378 wpalMutexRelease(&pWDICtx->wptMutex);
7379
7380 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007382
7383}/*WDI_MainRsp*/
7384
7385/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007387--------------------------------------------------------------------------*/
7388/**
7389 @brief Main FSM Stop function for state STOPPED
7390
Jeff Johnsone7245742012-09-05 17:12:55 -07007391
7392 @param pWDICtx: pointer to the WLAN DAL context
7393 pEventData: pointer to the event information structure
7394
Jeff Johnson295189b2012-06-20 16:38:30 -07007395 @see
7396 @return Result of the function call
7397*/
7398WDI_Status
7399WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007400(
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 WDI_ControlBlockType* pWDICtx,
7402 WDI_EventInfoType* pEventData
7403)
7404{
7405 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007406 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 ----------------------------------------------------------------------*/
7408 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7409 {
7410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007411 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 pWDICtx, pEventData);
7413 return WDI_STATUS_E_FAILURE;
7414 }
7415
7416 /*We should normally not get a STOP request if we are already stopped
7417 since we should normally be stopped by the UMAC. However in some
7418 error situations we put ourselves in the stopped state without the
7419 UMAC knowing, so when we get a STOP request in this state we still
7420 process it since we need to clean up the underlying state */
7421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7422 "Processing stop request while stopped in FSM");
7423
7424 /*Return Success*/
7425 return WDI_ProcessRequest( pWDICtx, pEventData );
7426
7427}/*WDI_MainStopStopped*/
7428
7429/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007431--------------------------------------------------------------------------*/
7432/**
7433 @brief Main FSM Start function for state BUSY
7434
Jeff Johnsone7245742012-09-05 17:12:55 -07007435
7436 @param pWDICtx: pointer to the WLAN DAL context
7437 pEventData: pointer to the event information structure
7438
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 @see
7440 @return Result of the function call
7441*/
7442WDI_Status
7443WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007444(
Jeff Johnson295189b2012-06-20 16:38:30 -07007445 WDI_ControlBlockType* pWDICtx,
7446 WDI_EventInfoType* pEventData
7447)
7448{
7449 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 ----------------------------------------------------------------------*/
7452 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7453 {
7454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007455 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007456 pWDICtx, pEventData);
7457 return WDI_STATUS_E_FAILURE;
7458 }
7459
7460 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007461 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007462 ----------------------------------------------------------------------*/
7463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7464 "WDI Busy state - queue start request");
7465
7466 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007468
7469 /*Return Success*/
7470 return WDI_STATUS_PENDING;
7471}/*WDI_MainStartBusy*/
7472
7473/**
7474 @brief Main FSM Stop function for state BUSY
7475
Jeff Johnsone7245742012-09-05 17:12:55 -07007476
7477 @param pWDICtx: pointer to the WLAN DAL context
7478 pEventData: pointer to the event information structure
7479
Jeff Johnson295189b2012-06-20 16:38:30 -07007480 @see
7481 @return Result of the function call
7482*/
7483WDI_Status
7484WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007485(
Jeff Johnson295189b2012-06-20 16:38:30 -07007486 WDI_ControlBlockType* pWDICtx,
7487 WDI_EventInfoType* pEventData
7488)
7489{
7490 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007492 ----------------------------------------------------------------------*/
7493 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7494 {
7495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007496 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 pWDICtx, pEventData);
7498 return WDI_STATUS_E_FAILURE;
7499 }
7500
7501 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 ----------------------------------------------------------------------*/
7504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7505 "WDI Busy state - queue stop request");
7506
Jeff Johnsone7245742012-09-05 17:12:55 -07007507 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007509
Jeff Johnson295189b2012-06-20 16:38:30 -07007510}/*WDI_MainStopBusy*/
7511
7512/**
7513 @brief Main FSM Request function for state BUSY
7514
Jeff Johnsone7245742012-09-05 17:12:55 -07007515
7516 @param pWDICtx: pointer to the WLAN DAL context
7517 pEventData: pointer to the event information structure
7518
Jeff Johnson295189b2012-06-20 16:38:30 -07007519 @see
7520 @return Result of the function call
7521*/
7522WDI_Status
7523WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007524(
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 WDI_ControlBlockType* pWDICtx,
7526 WDI_EventInfoType* pEventData
7527)
7528{
7529 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 ----------------------------------------------------------------------*/
7532 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7533 {
7534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007535 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007536 pWDICtx, pEventData);
7537 return WDI_STATUS_E_FAILURE;
7538 }
7539
7540 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 ----------------------------------------------------------------------*/
7543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7544 "WDI Busy state - queue request %d because waiting for response %d",
7545 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7546
Jeff Johnsone7245742012-09-05 17:12:55 -07007547 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007548 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007549
Jeff Johnson295189b2012-06-20 16:38:30 -07007550}/*WDI_MainReqBusy*/
7551/**
7552 @brief Main FSM Close function for state BUSY
7553
Jeff Johnsone7245742012-09-05 17:12:55 -07007554
7555 @param pWDICtx: pointer to the WLAN DAL context
7556 pEventData: pointer to the event information structure
7557
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 @see
7559 @return Result of the function call
7560*/
7561WDI_Status
7562WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007563(
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 WDI_ControlBlockType* pWDICtx,
7565 WDI_EventInfoType* pEventData
7566)
7567{
7568 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 ----------------------------------------------------------------------*/
7571 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7572 {
7573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007574 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007575 pWDICtx, pEventData);
7576 return WDI_STATUS_E_FAILURE;
7577 }
7578
7579 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007580 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 ----------------------------------------------------------------------*/
7582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7583 "WDI Busy state - queue close request");
7584
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007587
Jeff Johnson295189b2012-06-20 16:38:30 -07007588}/*WDI_MainCloseBusy*/
7589
7590/**
7591 @brief Main FSM Shutdown function for INIT & STARTED states
7592
7593
7594 @param pWDICtx: pointer to the WLAN DAL context
7595 pEventData: pointer to the event information structure
7596
7597 @see
7598 @return Result of the function call
7599*/
7600WDI_Status
7601WDI_MainShutdown
7602(
7603 WDI_ControlBlockType* pWDICtx,
7604 WDI_EventInfoType* pEventData
7605)
7606{
7607 /*--------------------------------------------------------------------
7608 Sanity Check
7609 ----------------------------------------------------------------------*/
7610 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7611 {
7612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007613 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 pWDICtx, pEventData);
7615 return WDI_STATUS_E_FAILURE;
7616 }
7617
7618 /*State at this point is BUSY - because we enter this state before posting
7619 an event to the FSM in order to prevent potential race conditions*/
7620
7621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7622 "Processing shutdown request in FSM");
7623
7624 /*Return Success*/
7625 return WDI_ProcessRequest( pWDICtx, pEventData );
7626
7627}/*WDI_MainShutdown*/
7628
7629/**
7630 @brief Main FSM Shutdown function for BUSY state
7631
7632
7633 @param pWDICtx: pointer to the WLAN DAL context
7634 pEventData: pointer to the event information structure
7635
7636 @see
7637 @return Result of the function call
7638*/
7639WDI_Status
7640WDI_MainShutdownBusy
7641(
7642 WDI_ControlBlockType* pWDICtx,
7643 WDI_EventInfoType* pEventData
7644)
7645{
7646 /*--------------------------------------------------------------------
7647 Sanity Check
7648 ----------------------------------------------------------------------*/
7649 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7650 {
7651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007652 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 pWDICtx, pEventData);
7654 return WDI_STATUS_E_FAILURE;
7655 }
7656
7657 /* If you are waiting for a HAL response at this stage, you are not
7658 * going to get it. Riva is already shutdown/crashed.
7659 */
7660 wpalTimerStop(&gWDICb.wptResponseTimer);
7661
7662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7663 "Processing shutdown request in FSM: Busy state ");
7664
7665 return WDI_ProcessRequest( pWDICtx, pEventData );
7666
7667}/*WDI_MainShutdownBusy*/
7668
7669
Jeff Johnsone7245742012-09-05 17:12:55 -07007670/*=======================================================================
7671
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007673
Jeff Johnson295189b2012-06-20 16:38:30 -07007674*=======================================================================*/
7675
7676/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007678========================================================================*/
7679/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007682
7683 @param pWDICtx: pointer to the WLAN DAL context
7684 pEventData: pointer to the event information structure
7685
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 @see
7687 @return Result of the function call
7688*/
7689WDI_Status
7690WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007691(
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 WDI_ControlBlockType* pWDICtx,
7693 WDI_EventInfoType* pEventData
7694)
7695{
7696 WDI_StartReqParamsType* pwdiStartParams = NULL;
7697 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 wpt_uint16 usDataOffset = 0;
7700 wpt_uint16 usSendSize = 0;
7701
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 tHalMacStartReqMsg halStartReq;
7703 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7705
7706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 -------------------------------------------------------------------------*/
7709 if (( NULL == pEventData ) ||
7710 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7711 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7712 {
7713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007717 }
7718
7719 /*-----------------------------------------------------------------------
7720 Get message buffer
7721 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 pwdiStartParams->usConfigBufferLen;
7724
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 usLen,
7727 &pSendBuffer, &usDataOffset, &usSendSize))||
7728 ( usSendSize < (usDataOffset + usLen )))
7729 {
7730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007731 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 pEventData, pwdiStartParams, wdiStartRspCb);
7733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 }
7736
7737 /*-----------------------------------------------------------------------
7738 Fill in the message
7739 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007740 halStartReq.startReqParams.driverType =
7741 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007742
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 halStartReq.startReqParams.uConfigBufferLen =
7744 pwdiStartParams->usConfigBufferLen;
7745 wpalMemoryCopy( pSendBuffer+usDataOffset,
7746 &halStartReq.startReqParams,
7747 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007748
Jeff Johnsone7245742012-09-05 17:12:55 -07007749 usDataOffset += sizeof(halStartReq.startReqParams);
7750 wpalMemoryCopy( pSendBuffer+usDataOffset,
7751 pwdiStartParams->pConfigBuffer,
7752 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007753
7754 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007756
7757 /*Save Low Level Ind CB and associated user data - it will be used further
7758 on when an indication is coming from the lower MAC*/
7759 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007761
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007767 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7768
Jeff Johnsone7245742012-09-05 17:12:55 -07007769
Jeff Johnson295189b2012-06-20 16:38:30 -07007770}/*WDI_ProcessStartReq*/
7771
7772/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007774 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007775
7776 @param pWDICtx: pointer to the WLAN DAL context
7777 pEventData: pointer to the event information structure
7778
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 @see
7780 @return Result of the function call
7781*/
7782WDI_Status
7783WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007784(
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 WDI_ControlBlockType* pWDICtx,
7786 WDI_EventInfoType* pEventData
7787)
7788{
7789 WDI_StopReqParamsType* pwdiStopParams = NULL;
7790 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 wpt_uint16 usDataOffset = 0;
7793 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007794 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007795 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7797
7798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 -------------------------------------------------------------------------*/
7801 if (( NULL == pEventData ) ||
7802 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7803 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7804 {
7805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007808 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 }
7810
7811 /*-----------------------------------------------------------------------
7812 Get message buffer
7813 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007815 sizeof(halStopReq.stopReqParams),
7816 &pSendBuffer, &usDataOffset, &usSendSize))||
7817 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7818 {
7819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007820 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007821 pEventData, pwdiStopParams, wdiStopRspCb);
7822 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007823 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 }
7825
7826 /*-----------------------------------------------------------------------
7827 Fill in the message
7828 -----------------------------------------------------------------------*/
7829 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7830 pwdiStopParams->wdiStopReason);
7831
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 wpalMemoryCopy( pSendBuffer+usDataOffset,
7833 &halStopReq.stopReqParams,
7834 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007835
7836 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007837 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007838
7839 /*! TO DO: stop the data services */
7840 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7841 {
7842 /*Stop the STA Table !UT- check this logic again
7843 It is safer to do it here than on the response - because a stop is imminent*/
7844 WDI_STATableStop(pWDICtx);
7845
7846 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007847 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7848 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 {
7850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7851 "WDI Init failed to reset power state event");
7852
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007854 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 }
7856 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007857 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7858 if( eWLAN_PAL_STATUS_SUCCESS != status )
7859 {
7860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007861 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
Ravali85acf6b2012-12-12 14:01:38 -08007862 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007863 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007864 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007867 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007868 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7869 WDI_SET_POWER_STATE_TIMEOUT);
7870 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 {
7872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7873 "WDI Init failed to wait on an event");
7874
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007876 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 }
7878 }
7879
7880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007881 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7885
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007886fail:
7887 // Release the message buffer so we don't leak
7888 wpalMemoryFree(pSendBuffer);
7889
7890failRequest:
7891 //WDA should have failure check to avoid the memory leak
7892 return WDI_STATUS_E_FAILURE;
7893
Jeff Johnson295189b2012-06-20 16:38:30 -07007894}/*WDI_ProcessStopReq*/
7895
7896/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007899
7900 @param pWDICtx: pointer to the WLAN DAL context
7901 pEventData: pointer to the event information structure
7902
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 @see
7904 @return Result of the function call
7905*/
7906WDI_Status
7907WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007908(
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 WDI_ControlBlockType* pWDICtx,
7910 WDI_EventInfoType* pEventData
7911)
7912{
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7915
7916 /*Lock control block for cleanup*/
7917 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007918
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 /*Clear all pending request*/
7920 WDI_ClearPendingRequests(pWDICtx);
7921
7922 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007923 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007924
7925 /* Close Data transport*/
7926 /* FTM mode does not open Data Path */
7927 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7928 {
7929 WDTS_Close(pWDICtx);
7930 }
7931
7932 /*Close the STA Table !UT- check this logic again*/
7933 WDI_STATableClose(pWDICtx);
7934
7935 /*close the PAL */
7936 wptStatus = wpalClose(pWDICtx->pPALContext);
7937 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7938 {
7939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7940 "Failed to wpal Close %d", wptStatus);
7941 WDI_ASSERT(0);
7942 }
7943
7944 /*Transition back to init state*/
7945 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7946
7947 wpalMutexRelease(&pWDICtx->wptMutex);
7948
7949 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007951
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007953}/*WDI_ProcessCloseReq*/
7954
7955
7956/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007957 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007958===========================================================================*/
7959
7960/**
7961 @brief Process Init Scan Request function (called when Main FSM
7962 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007963
7964 @param pWDICtx: pointer to the WLAN DAL context
7965 pEventData: pointer to the event information structure
7966
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 @see
7968 @return Result of the function call
7969*/
7970WDI_Status
7971WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007972(
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 WDI_ControlBlockType* pWDICtx,
7974 WDI_EventInfoType* pEventData
7975)
7976{
7977 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7978 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 wpt_uint16 usDataOffset = 0;
7981 wpt_uint16 usSendSize = 0;
7982 wpt_uint8 i = 0;
7983
7984 tHalInitScanReqMsg halInitScanReqMsg;
7985
Jeff Johnsone7245742012-09-05 17:12:55 -07007986 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 * It shold be removed once host and riva changes are in sync*/
7988 tHalInitScanConReqMsg halInitScanConReqMsg;
7989
7990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7991
7992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 -------------------------------------------------------------------------*/
7995 if (( NULL == pEventData ) ||
7996 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7997 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7998 {
7999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008003 }
8004
8005#if 0
8006 wpalMutexAcquire(&pWDICtx->wptMutex);
8007 /*-----------------------------------------------------------------------
8008 Check to see if SCAN is already in progress - if so reject the req
8009 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 -----------------------------------------------------------------------*/
8012 if ( pWDICtx->bScanInProgress )
8013 {
8014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8015 "Scan is already in progress - subsequent scan is not allowed"
8016 " until the first scan completes");
8017
8018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 }
8021
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8023 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008024
8025 wpalMutexRelease(&pWDICtx->wptMutex);
8026#endif
Viral Modid86bde22012-12-10 13:09:21 -08008027 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 * It shold be removed once host and riva changes are in sync*/
8031 /*-----------------------------------------------------------------------
8032 Get message buffer
8033 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 sizeof(halInitScanConReqMsg.initScanParams),
8036 &pSendBuffer, &usDataOffset, &usSendSize))||
8037 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8038 {
8039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008040 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 }
8045
8046
8047 /*-----------------------------------------------------------------------
8048 Fill in the message
8049 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8052
8053 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8054 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8055
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8062
8063 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8064 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8065
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8067 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008068
Jeff Johnsone7245742012-09-05 17:12:55 -07008069 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008070 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8071
8072 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8073 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8076 }
8077
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 wpalMemoryCopy( pSendBuffer+usDataOffset,
8079 &halInitScanConReqMsg.initScanParams,
8080 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008081 }
8082 else
8083 {
8084 /*-----------------------------------------------------------------------
8085 Get message buffer
8086 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 sizeof(halInitScanReqMsg.initScanParams),
8089 &pSendBuffer, &usDataOffset, &usSendSize))||
8090 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8091 {
8092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008093 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 }
8098
8099
8100 /*-----------------------------------------------------------------------
8101 Fill in the message
8102 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8105
8106 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8107 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8108
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008110 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008111 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008113 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8115
8116 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8117 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8118
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8121
8122 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8123 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8126 }
8127
Jeff Johnsone7245742012-09-05 17:12:55 -07008128 wpalMemoryCopy( pSendBuffer+usDataOffset,
8129 &halInitScanReqMsg.initScanParams,
8130 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 }
8132
8133 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008135
8136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8141
8142}/*WDI_ProcessInitScanReq*/
8143
8144/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008147
8148 @param pWDICtx: pointer to the WLAN DAL context
8149 pEventData: pointer to the event information structure
8150
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 @see
8152 @return Result of the function call
8153*/
8154WDI_Status
8155WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008156(
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 WDI_ControlBlockType* pWDICtx,
8158 WDI_EventInfoType* pEventData
8159)
8160{
8161 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8162 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 wpt_uint16 usDataOffset = 0;
8165 wpt_uint16 usSendSize = 0;
8166
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8169
8170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008172 -------------------------------------------------------------------------*/
8173 if (( NULL == pEventData ) ||
8174 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8175 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8176 {
8177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 }
8182
8183#if 0
8184 wpalMutexAcquire(&pWDICtx->wptMutex);
8185 /*-----------------------------------------------------------------------
8186 Check to see if SCAN is already in progress - start scan is only
8187 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008189 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008190 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8192 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8193 {
8194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8195 "Scan start not allowed in this state %d %d",
8196 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008197
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 }
8201
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008203
8204 wpalMutexRelease(&pWDICtx->wptMutex);
8205#endif
8206
8207 /*-----------------------------------------------------------------------
8208 Get message buffer
8209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 sizeof(halStartScanReqMsg.startScanParams),
8212 &pSendBuffer, &usDataOffset, &usSendSize))||
8213 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8214 {
8215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008216 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 }
8221
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 wpalMemoryCopy( pSendBuffer+usDataOffset,
8225 &halStartScanReqMsg.startScanParams,
8226 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008227
8228 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008230
8231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8236}/*WDI_ProcessStartScanReq*/
8237
8238
8239/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008240 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008242
8243 @param pWDICtx: pointer to the WLAN DAL context
8244 pEventData: pointer to the event information structure
8245
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 @see
8247 @return Result of the function call
8248*/
8249WDI_Status
8250WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008251(
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 WDI_ControlBlockType* pWDICtx,
8253 WDI_EventInfoType* pEventData
8254)
8255{
8256 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8257 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 wpt_uint16 usDataOffset = 0;
8260 wpt_uint16 usSendSize = 0;
8261
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8264
8265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008266 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008267 -------------------------------------------------------------------------*/
8268 if (( NULL == pEventData ) ||
8269 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8270 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8271 {
8272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 }
8277
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8279 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008280 * forwarded to HAL and result in hang*/
8281#if 0
8282 wpalMutexAcquire(&pWDICtx->wptMutex);
8283 /*-----------------------------------------------------------------------
8284 Check to see if SCAN is already in progress - end scan is only
8285 allowed when a scan is ongoing and the state of the scan procedure
8286 is started
8287 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008288 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8290 {
8291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8292 "End start not allowed in this state %d %d",
8293 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008294
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 }
8298
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008300
8301 wpalMutexRelease(&pWDICtx->wptMutex);
8302#endif
8303
8304 /*-----------------------------------------------------------------------
8305 Get message buffer
8306 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 sizeof(halEndScanReqMsg.endScanParams),
8309 &pSendBuffer, &usDataOffset, &usSendSize))||
8310 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8311 {
8312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008313 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008314 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 }
8318
8319 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8320
Jeff Johnsone7245742012-09-05 17:12:55 -07008321 wpalMemoryCopy( pSendBuffer+usDataOffset,
8322 &halEndScanReqMsg.endScanParams,
8323 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008324
8325 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008327
8328 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8333}/*WDI_ProcessEndScanReq*/
8334
8335
8336/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008339
8340 @param pWDICtx: pointer to the WLAN DAL context
8341 pEventData: pointer to the event information structure
8342
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 @see
8344 @return Result of the function call
8345*/
8346WDI_Status
8347WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008348(
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 WDI_ControlBlockType* pWDICtx,
8350 WDI_EventInfoType* pEventData
8351)
8352{
8353 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8354 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 wpt_uint16 usDataOffset = 0;
8357 wpt_uint16 usSendSize = 0;
8358 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008359 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8362
8363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 -------------------------------------------------------------------------*/
8366 if (( NULL == pEventData ) ||
8367 ( NULL == pEventData->pEventData) ||
8368 ( NULL == pEventData->pCBfnc))
8369 {
8370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 }
8375
8376 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8377 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008378 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8379 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 * forwarded to HAL and result in hang*/
8381#if 0
8382 wpalMutexAcquire(&pWDICtx->wptMutex);
8383 /*-----------------------------------------------------------------------
8384 Check to see if SCAN is already in progress
8385 Finish scan gets invoked any scan states. ie. abort scan
8386 It should be allowed in any states.
8387 -----------------------------------------------------------------------*/
8388 if ( !pWDICtx->bScanInProgress )
8389 {
8390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8391 "Finish start not allowed in this state %d",
8392 pWDICtx->bScanInProgress );
8393
8394 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008396 }
8397
8398 /*-----------------------------------------------------------------------
8399 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8403 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008404 wpalMutexRelease(&pWDICtx->wptMutex);
8405#endif
8406
8407 if ( pWDICtx->bInBmps )
8408 {
8409 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008410 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8411 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8412 {
8413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008414 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008415 WDI_ASSERT(0);
8416 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008417 }
8418
8419 /*-----------------------------------------------------------------------
8420 Get message buffer
8421 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 sizeof(halFinishScanReqMsg.finishScanParams),
8424 &pSendBuffer, &usDataOffset, &usSendSize))||
8425 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8426 {
8427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008428 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008429 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 }
8433
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8436
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8439
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8442
8443 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8444 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8445
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8452
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8455
8456 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8457 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8460 }
8461
8462 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8463 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8464
Jeff Johnsone7245742012-09-05 17:12:55 -07008465 wpalMemoryCopy( pSendBuffer+usDataOffset,
8466 &halFinishScanReqMsg.finishScanParams,
8467 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008468
8469 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008471
8472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8477}/*WDI_ProcessFinishScanReq*/
8478
8479
8480/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008482==========================================================================*/
8483/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 @brief Process BSS Join for a given Session
8485
8486 @param pWDICtx: pointer to the WLAN DAL context
8487 pEventData: pointer to the event information structure
8488
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 @see
8490 @return Result of the function call
8491*/
8492WDI_Status
8493WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008494(
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 WDI_ControlBlockType* pWDICtx,
8496 WDI_JoinReqParamsType* pwdiJoinParams,
8497 WDI_JoinRspCb wdiJoinRspCb,
8498 void* pUserData
8499)
8500{
8501 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 wpt_uint16 usDataOffset = 0;
8504 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008506
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8509
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008510 wpalMutexAcquire(&pWDICtx->wptMutex);
8511
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 /*------------------------------------------------------------------------
8513 Check to see if we have any session with this BSSID already stored, we
8514 should not
8515 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8517 pwdiJoinParams->wdiReqInfo.macBSSID,
8518 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008519
8520 if ( NULL != pBSSSes )
8521 {
8522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008523 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8524 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008525
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008526 /*reset the bAssociationInProgress otherwise the next
8527 *join request will be queued*/
8528 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8529 wpalMutexRelease(&pWDICtx->wptMutex);
8530 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 }
8532
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008537 if ( NULL == pBSSSes )
8538 {
8539
8540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8541 "DAL has no free sessions - cannot run another join");
8542
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008543 /*reset the bAssociationInProgress otherwise the next
8544 *join request will be queued*/
8545 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008546 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 }
8549
8550 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8552 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 WDI_MAC_ADDR_LEN);
8554
8555 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008558
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 wpalMutexRelease(&pWDICtx->wptMutex);
8560
8561 /*-----------------------------------------------------------------------
8562 Get message buffer
8563 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 sizeof(halJoinReqMsg.joinReqParams),
8566 &pSendBuffer, &usDataOffset, &usSendSize))||
8567 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8568 {
8569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008570 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 pUserData, pwdiJoinParams, wdiJoinRspCb);
8572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 }
8575
8576 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008577 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008578
8579 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008580 pwdiJoinParams->wdiReqInfo.macSTASelf,
8581 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008582
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8585
8586 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8587
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008588#ifdef WLAN_FEATURE_VOWIFI
8589 halJoinReqMsg.joinReqParams.maxTxPower =
8590 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8591#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8594#endif
8595
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8598 wdiSecondaryChannelOffset);
8599
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 wpalMemoryCopy( pSendBuffer+usDataOffset,
8601 &halJoinReqMsg.joinReqParams,
8602 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008603
8604 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008606
8607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8611 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008612
8613}/*WDI_ProcessBSSSessionJoinReq*/
8614
8615/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008618
8619 @param pWDICtx: pointer to the WLAN DAL context
8620 pEventData: pointer to the event information structure
8621
Jeff Johnson295189b2012-06-20 16:38:30 -07008622 @see
8623 @return Result of the function call
8624*/
8625WDI_Status
8626WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008627(
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 WDI_ControlBlockType* pWDICtx,
8629 WDI_EventInfoType* pEventData
8630)
8631{
8632 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8633 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8634 WDI_JoinRspCb wdiJoinRspCb = NULL;
8635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8636
8637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 -------------------------------------------------------------------------*/
8640 if (( NULL == pEventData ) ||
8641 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8642 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8643 {
8644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008649
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 /*-------------------------------------------------------------------------
8651 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 -------------------------------------------------------------------------*/
8654 wpalMutexAcquire(&pWDICtx->wptMutex);
8655
8656 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8657 {
8658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8659 "Association is currently in progress, queueing new join req");
8660
8661 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 pwdiJoinParams->wdiReqInfo.macBSSID);
8664
8665 wpalMutexRelease(&pWDICtx->wptMutex);
8666
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 }
8669
8670 /*Starting a new association */
8671 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8672 wpalMutexRelease(&pWDICtx->wptMutex);
8673
8674 /*Process the Join Request*/
8675 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8676 wdiJoinRspCb,pEventData->pUserData);
8677
8678}/*WDI_ProcessJoinReq*/
8679
8680
8681/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008684
8685 @param pWDICtx: pointer to the WLAN DAL context
8686 pEventData: pointer to the event information structure
8687
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 @see
8689 @return Result of the function call
8690*/
8691WDI_Status
8692WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008693(
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 WDI_ControlBlockType* pWDICtx,
8695 WDI_EventInfoType* pEventData
8696)
8697{
8698 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8699 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008700 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008701 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 wpt_uint16 uMsgSize = 0;
8703 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 wpt_uint16 usDataOffset = 0;
8705 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008707
Jeff Johnsone7245742012-09-05 17:12:55 -07008708 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8710
8711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 -------------------------------------------------------------------------*/
8714 if (( NULL == pEventData ) ||
8715 ( NULL == pEventData->pEventData ) ||
8716 ( NULL == pEventData->pCBfnc ))
8717 {
8718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 }
8723
Abhishek Singh6927fa02014-06-27 17:19:55 +05308724 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8726 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8727 /*-------------------------------------------------------------------------
8728 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 -------------------------------------------------------------------------*/
8731 wpalMutexAcquire(&pWDICtx->wptMutex);
8732
8733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8737 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8738 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008739
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 {
8742#ifdef WLAN_FEATURE_VOWIFI_11R
8743 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008747 if ( NULL == pBSSSes )
8748 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008749
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8751 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008752
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008756
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8759 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008761
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8765#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 * Request in case of IBSS*/
8768 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8769 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8770 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8771 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8772 {
8773 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 if ( NULL == pBSSSes )
8778 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008779
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8781 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008782
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008786
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008788 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8789 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008791
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8795 }
8796 else
8797 {
8798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8800 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8801 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8802
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 /* for IBSS testing */
8804 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 }
8807#endif
8808 }
8809
8810 /*------------------------------------------------------------------------
8811 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 ------------------------------------------------------------------------*/
8814 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8815 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8817 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8818 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8819 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008820
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008822
8823 wpalMutexRelease(&pWDICtx->wptMutex);
8824
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 }
8827
8828 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008829 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8830 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 sizeof(pWDICtx->wdiCachedConfigBssReq));
8832
8833 wpalMutexRelease(&pWDICtx->wptMutex);
8834
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8836#ifdef WLAN_FEATURE_11AC
8837 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008838 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008839 else
8840#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008841 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008842
8843 /*-----------------------------------------------------------------------
8844 Get message buffer
8845 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8848 ( usSendSize < (usDataOffset + uMsgSize )))
8849 {
8850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008851 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 }
8856
8857 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008858#ifdef WLAN_FEATURE_11AC
8859 if (WDI_getFwWlanFeatCaps(DOT11AC))
8860 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8861 &pwdiConfigBSSParams->wdiReqInfo);
8862 else
8863#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 &pwdiConfigBSSParams->wdiReqInfo);
8866
8867 /* Need to fill in the STA Index to invalid, since at this point we have not
8868 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008870
8871 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8873
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008874#ifdef WLAN_FEATURE_11AC
8875 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8876 wpalMemoryCopy( pSendBuffer+usDataOffset,
8877 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8878 uMsgSize);
8879 }else
8880#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008881 {
8882 if ( uMsgSize <= sizeof(tConfigBssParams) )
8883 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008884 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008885 &halConfigBssReqMsg.uBssParams.configBssParams,
8886 uMsgSize);
8887 }
8888 else
8889 {
8890 return WDI_STATUS_E_FAILURE;
8891 }
8892 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008893
8894 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308896 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8901 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 WDI_CONFIG_BSS_RESP);
8903
8904}/*WDI_ProcessConfigBSSReq*/
8905
8906
8907/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008908 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008910
8911 @param pWDICtx: pointer to the WLAN DAL context
8912 pEventData: pointer to the event information structure
8913
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 @see
8915 @return Result of the function call
8916*/
8917WDI_Status
8918WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008919(
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 WDI_ControlBlockType* pWDICtx,
8921 WDI_EventInfoType* pEventData
8922)
8923{
8924 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8925 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008929 wpt_uint16 usDataOffset = 0;
8930 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008932
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8935
8936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 -------------------------------------------------------------------------*/
8939 if (( NULL == pEventData ) ||
8940 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8941 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8942 {
8943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 }
8948
8949 /*-------------------------------------------------------------------------
8950 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008952 -------------------------------------------------------------------------*/
8953 wpalMutexAcquire(&pWDICtx->wptMutex);
8954
8955 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8959 pwdiDelBSSParams->ucBssIdx,
8960 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008961
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 {
8964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 "%s: BSS does not yet exist. ucBssIdx %d",
8966 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008967
8968 wpalMutexRelease(&pWDICtx->wptMutex);
8969
8970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008972
8973 /*------------------------------------------------------------------------
8974 Check if this BSS is being currently processed or queued,
8975 if queued - queue the new request as well
8976 ------------------------------------------------------------------------*/
8977 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008978 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8980 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8981 __func__, pwdiDelBSSParams->ucBssIdx);
8982
8983 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8984
8985 wpalMutexRelease(&pWDICtx->wptMutex);
8986
8987 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008989
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 /*-----------------------------------------------------------------------
8991 If we receive a Del BSS request for an association that is already in
8992 progress, it indicates that the assoc has failed => we no longer have
8993 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 -----------------------------------------------------------------------*/
8996 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8997 {
8998 /*We can switch to false here because even if a subsequent Join comes in
8999 it will only be processed when DAL transitions out of BUSY state which
9000 happens when the Del BSS request comes */
9001 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9002
9003 /*Former association is complete - prepare next pending assoc for
9004 processing */
9005 WDI_DequeueAssocRequest(pWDICtx);
9006 }
9007
9008 wpalMutexRelease(&pWDICtx->wptMutex);
9009 /*-----------------------------------------------------------------------
9010 Get message buffer
9011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 sizeof(halBssReqMsg.deleteBssParams),
9014 &pSendBuffer, &usDataOffset, &usSendSize))||
9015 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9016 {
9017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009018 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 }
9023
9024 /*Fill in the message request structure*/
9025
9026 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009027 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009028
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 wpalMemoryCopy( pSendBuffer+usDataOffset,
9030 &halBssReqMsg.deleteBssParams,
9031 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009032
9033 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009035
Jeff Johnsone7245742012-09-05 17:12:55 -07009036
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009038 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009039 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009041 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9042
Jeff Johnsone7245742012-09-05 17:12:55 -07009043
Jeff Johnson295189b2012-06-20 16:38:30 -07009044}/*WDI_ProcessDelBSSReq*/
9045
9046/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009049
9050 @param pWDICtx: pointer to the WLAN DAL context
9051 pEventData: pointer to the event information structure
9052
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 @see
9054 @return Result of the function call
9055*/
9056WDI_Status
9057WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009058(
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 WDI_ControlBlockType* pWDICtx,
9060 WDI_EventInfoType* pEventData
9061)
9062{
9063 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9064 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009065 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 wpt_uint16 usDataOffset = 0;
9069 wpt_uint16 usSendSize = 0;
9070 wpt_uint16 uMsgSize = 0;
9071 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009072 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009073
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9076
9077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 -------------------------------------------------------------------------*/
9080 if (( NULL == pEventData ) ||
9081 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9082 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9083 {
9084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 }
9089
9090 /*-------------------------------------------------------------------------
9091 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009093 -------------------------------------------------------------------------*/
9094 wpalMutexAcquire(&pWDICtx->wptMutex);
9095
9096 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9100 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9101 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009102
9103 if ( NULL == pBSSSes )
9104 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9106 "%s: Association sequence for this BSS does not yet exist - "
9107 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9108 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009109
9110 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 }
9113
9114 /*------------------------------------------------------------------------
9115 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009117 ------------------------------------------------------------------------*/
9118 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9119 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9121 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9122 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009123
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009125
9126 wpalMutexRelease(&pWDICtx->wptMutex);
9127
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 }
9130
9131 /*-----------------------------------------------------------------------
9132 If Post Assoc was not yet received - the current association must
9133 be in progress
9134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9137 {
9138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9139 "Association sequence for this BSS association no longer in "
9140 "progress - not allowed");
9141
9142 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 }
9145
9146 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 -----------------------------------------------------------------------*/
9149 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9150 {
9151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9152 "Post Assoc not allowed before JOIN - failing request");
9153
9154 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 }
9157
9158 wpalMutexRelease(&pWDICtx->wptMutex);
9159
9160 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9161 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9162 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9167 ( usSendSize < (usDataOffset + uMsgSize )))
9168 {
9169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009170 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 }
9175
9176 /*Copy the STA parameters */
9177 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9178 &pwdiPostAssocParams->wdiSTAParams );
9179
9180 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 WDI_STATableFindStaidByAddr(pWDICtx,
9183 pwdiPostAssocParams->wdiSTAParams.macSTA,
9184 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9185 {
9186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009187 MAC_ADDRESS_STR
9188 ": This station does not exist in the WDI Station Table",
9189 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009191 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 }
9194
9195 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 pBSSSes->ucBSSIdx;
9198
9199 /*Copy the BSS parameters */
9200 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9201 &pwdiPostAssocParams->wdiBSSParams);
9202
9203 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 WDI_STATableFindStaidByAddr(pWDICtx,
9206 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 {
9209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009210 MAC_ADDRESS_STR
9211 ": This station does not exist in the WDI Station Table",
9212 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009214 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 }
9217
9218 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 pBSSSes->ucBSSIdx;
9221
Jeff Johnsone7245742012-09-05 17:12:55 -07009222
9223 wpalMemoryCopy( pSendBuffer+usDataOffset,
9224 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9225 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009226
9227 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9228
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9230 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9231 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009232
Jeff Johnsone7245742012-09-05 17:12:55 -07009233
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009236
Jeff Johnsone7245742012-09-05 17:12:55 -07009237
9238 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009241
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309242 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009244 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9248
Jeff Johnsone7245742012-09-05 17:12:55 -07009249
Jeff Johnson295189b2012-06-20 16:38:30 -07009250}/*WDI_ProcessPostAssocReq*/
9251
9252/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009253 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009255
9256 @param pWDICtx: pointer to the WLAN DAL context
9257 pEventData: pointer to the event information structure
9258
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 @see
9260 @return Result of the function call
9261*/
9262WDI_Status
9263WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009264(
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 WDI_ControlBlockType* pWDICtx,
9266 WDI_EventInfoType* pEventData
9267)
9268{
9269 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9270 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 wpt_uint16 usDataOffset = 0;
9275 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9278
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9281
9282 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 -------------------------------------------------------------------------*/
9285 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9286 ( NULL == pEventData->pCBfnc ))
9287 {
9288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 }
9293
9294 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9295 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9296 /*-------------------------------------------------------------------------
9297 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 -------------------------------------------------------------------------*/
9300 wpalMutexAcquire(&pWDICtx->wptMutex);
9301
9302 /*------------------------------------------------------------------------
9303 Find the BSS for which the request is made and identify WDI session
9304 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9306 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 &macBSSID))
9308 {
9309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009310 "This station does not exist in the WDI Station Table %d",
9311 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 }
9315
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9317 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9320 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9321 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009322
9323 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 }
9326
9327 /*------------------------------------------------------------------------
9328 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 ------------------------------------------------------------------------*/
9331 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9332 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9334 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9335 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009336
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 }
9341
9342 wpalMutexRelease(&pWDICtx->wptMutex);
9343 /*-----------------------------------------------------------------------
9344 Get message buffer
9345 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 sizeof(halDelStaReqMsg.delStaParams),
9348 &pSendBuffer, &usDataOffset, &usSendSize))||
9349 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9350 {
9351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009352 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 }
9357
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9359 wpalMemoryCopy( pSendBuffer+usDataOffset,
9360 &halDelStaReqMsg.delStaParams,
9361 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009362
9363 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009365
9366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9371
9372}/*WDI_ProcessDelSTAReq*/
9373
9374
9375/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009376 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009377==========================================================================*/
9378/**
9379 @brief Process Set BSS Key Request function (called when Main FSM
9380 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009381
9382 @param pWDICtx: pointer to the WLAN DAL context
9383 pEventData: pointer to the event information structure
9384
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 @see
9386 @return Result of the function call
9387*/
9388WDI_Status
9389WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009390(
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 WDI_ControlBlockType* pWDICtx,
9392 WDI_EventInfoType* pEventData
9393)
9394{
9395 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9396 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 wpt_uint16 usDataOffset = 0;
9401 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9404 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309405 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009406
9407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9408
9409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 -------------------------------------------------------------------------*/
9412 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9413 ( NULL == pEventData->pCBfnc ))
9414 {
9415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 }
9420
9421 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9422 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9423 /*-------------------------------------------------------------------------
9424 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009425 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 -------------------------------------------------------------------------*/
9427 wpalMutexAcquire(&pWDICtx->wptMutex);
9428
9429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9433 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9434 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009435
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 {
9438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9440 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009441
9442 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009444 }
9445
9446 /*------------------------------------------------------------------------
9447 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 ------------------------------------------------------------------------*/
9450 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9451 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9453 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9454 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009455
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 }
9460
9461
9462 wpalMutexRelease(&pWDICtx->wptMutex);
9463 /*-----------------------------------------------------------------------
9464 Get message buffer
9465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9468 &pSendBuffer, &usDataOffset, &usSendSize))||
9469 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9470 {
9471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009472 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 }
9477
9478 /*-----------------------------------------------------------------------
9479 Copy the Key parameters into the HAL message
9480 -----------------------------------------------------------------------*/
9481
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9486
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9489
9490 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9491 keyIndex++)
9492 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9495 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9496 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9497 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9498 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309499
9500 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9501 {
9502 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9503 {
9504 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9505 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9506 }
9507
9508 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9509 {
9510 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9511 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9512 }
9513
9514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9515 "%s: Negated Keys", __func__);
9516 }
9517 else
9518 {
9519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9520 "%s: No change in Keys", __func__);
9521 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309524 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9525 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9526 WDI_MAX_KEY_LENGTH);
9527 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009528 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009529 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309532 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009533
9534 wpalMemoryCopy( pSendBuffer+usDataOffset,
9535 &halSetBssKeyReqMsg.setBssKeyParams,
9536 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009537
9538 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009540
9541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009543 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9545 wdiSetBSSKeyRspCb, pEventData->pUserData,
9546 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009547
9548}/*WDI_ProcessSetBssKeyReq*/
9549
9550/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009553
9554 @param pWDICtx: pointer to the WLAN DAL context
9555 pEventData: pointer to the event information structure
9556
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 @see
9558 @return Result of the function call
9559*/
9560WDI_Status
9561WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009562(
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 WDI_ControlBlockType* pWDICtx,
9564 WDI_EventInfoType* pEventData
9565)
9566{
9567 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9568 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 wpt_uint16 usDataOffset = 0;
9573 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9577
9578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 -------------------------------------------------------------------------*/
9581 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9582 ( NULL == pEventData->pCBfnc ))
9583 {
9584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 }
9589
9590 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9591 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9592 /*-------------------------------------------------------------------------
9593 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 -------------------------------------------------------------------------*/
9596 wpalMutexAcquire(&pWDICtx->wptMutex);
9597
9598 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9602 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9603 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009604
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009606 {
9607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9609 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009610
9611 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 }
9614
9615 /*------------------------------------------------------------------------
9616 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 ------------------------------------------------------------------------*/
9619 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9620 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9622 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9623 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009624
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 }
9629
9630
9631 wpalMutexRelease(&pWDICtx->wptMutex);
9632
9633 /*-----------------------------------------------------------------------
9634 Get message buffer
9635 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9638 &pSendBuffer, &usDataOffset, &usSendSize))||
9639 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9640 {
9641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009642 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 }
9647 /*-----------------------------------------------------------------------
9648 Copy the Key parameters into the HAL message
9649 -----------------------------------------------------------------------*/
9650 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9651
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9654
9655 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9656
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9659
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 wpalMemoryCopy( pSendBuffer+usDataOffset,
9661 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9662 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009663
9664 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009666
9667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009673}/*WDI_ProcessRemoveBssKeyReq*/
9674
9675/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009676 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009678
9679 @param pWDICtx: pointer to the WLAN DAL context
9680 pEventData: pointer to the event information structure
9681
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 @see
9683 @return Result of the function call
9684*/
9685WDI_Status
9686WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009687(
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 WDI_ControlBlockType* pWDICtx,
9689 WDI_EventInfoType* pEventData
9690)
9691{
9692 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9693 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9694 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 wpt_uint16 usDataOffset = 0;
9697 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9702 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309703 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009704
9705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9706
9707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 -------------------------------------------------------------------------*/
9710 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9711 ( NULL == pEventData->pCBfnc ))
9712 {
9713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 }
9718
9719 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9720 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9721 /*-------------------------------------------------------------------------
9722 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 -------------------------------------------------------------------------*/
9725 wpalMutexAcquire(&pWDICtx->wptMutex);
9726
9727 /*------------------------------------------------------------------------
9728 Find the BSS for which the request is made and identify WDI session
9729 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009730 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9731 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 &macBSSID))
9733 {
9734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009735 "This station does not exist in the WDI Station Table %d",
9736 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009737 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 }
9740
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9742 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009743 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9745 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9746 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009747
9748 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009751
Jeff Johnson295189b2012-06-20 16:38:30 -07009752 /*------------------------------------------------------------------------
9753 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009754 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 ------------------------------------------------------------------------*/
9756 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9757 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9759 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9760 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009761
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 }
9766
9767
9768 wpalMutexRelease(&pWDICtx->wptMutex);
9769 /*-----------------------------------------------------------------------
9770 Get message buffer
9771 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9774 &pSendBuffer, &usDataOffset, &usSendSize))||
9775 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9776 {
9777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009778 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 }
9783 /*-----------------------------------------------------------------------
9784 Copy the STA Key parameters into the HAL message
9785 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9788
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9791
9792 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9793
9794 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9795
9796 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9797
Jeff Johnson295189b2012-06-20 16:38:30 -07009798 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9799 keyIndex++)
9800 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9803 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9804 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9805 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9806 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309807
9808 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9809 {
9810 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9811 {
9812 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9813 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9814 }
9815
9816 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9817 {
9818 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9819 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9820 }
9821
9822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9823 "%s: Negated Keys", __func__);
9824 }
9825 else
9826 {
9827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9828 "%s: No change in Keys", __func__);
9829 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309832 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9833 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9834 WDI_MAX_KEY_LENGTH);
9835 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009837 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309840 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009841
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 wpalMemoryCopy( pSendBuffer+usDataOffset,
9843 &halSetStaKeyReqMsg.setStaKeyParams,
9844 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009845
9846 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309848 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009850 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9853 wdiSetSTAKeyRspCb, pEventData->pUserData,
9854 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009855
9856}/*WDI_ProcessSetSTAKeyReq*/
9857
9858/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009861
9862 @param pWDICtx: pointer to the WLAN DAL context
9863 pEventData: pointer to the event information structure
9864
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 @see
9866 @return Result of the function call
9867*/
9868WDI_Status
9869WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009870(
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 WDI_ControlBlockType* pWDICtx,
9872 WDI_EventInfoType* pEventData
9873)
9874{
9875 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9876 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9877 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 wpt_uint16 usDataOffset = 0;
9880 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 wpt_macAddr macBSSID;
9883 wpt_uint8 ucCurrentBSSSesIdx;
9884 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9886
9887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 -------------------------------------------------------------------------*/
9890 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9891 ( NULL == pEventData->pCBfnc ))
9892 {
9893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 }
9898
9899 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9900 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9901 /*-------------------------------------------------------------------------
9902 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 -------------------------------------------------------------------------*/
9905 wpalMutexAcquire(&pWDICtx->wptMutex);
9906
9907 /*------------------------------------------------------------------------
9908 Find the BSS for which the request is made and identify WDI session
9909 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9911 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 &macBSSID))
9913 {
9914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009915 "This station does not exist in the WDI Station Table %d",
9916 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 }
9920
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9922 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9925 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9926 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009927
9928 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009931
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 /*------------------------------------------------------------------------
9933 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 ------------------------------------------------------------------------*/
9936 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9937 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9939 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9940 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009941
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 }
9946
9947
9948
9949 wpalMutexRelease(&pWDICtx->wptMutex);
9950 /*-----------------------------------------------------------------------
9951 Get message buffer
9952 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9955 &pSendBuffer, &usDataOffset, &usSendSize))||
9956 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9957 {
9958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009959 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 }
9964
9965 /*-----------------------------------------------------------------------
9966 Copy the Key parameters into the HAL message
9967 -----------------------------------------------------------------------*/
9968
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009970 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9971
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9974
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009976 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9977
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009979 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9980
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 wpalMemoryCopy( pSendBuffer+usDataOffset,
9982 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9983 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009984
9985 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009987
9988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009993 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009994
9995}/*WDI_ProcessRemoveSTAKeyReq*/
9996
9997/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010000
10001 @param pWDICtx: pointer to the WLAN DAL context
10002 pEventData: pointer to the event information structure
10003
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 @see
10005 @return Result of the function call
10006*/
10007WDI_Status
10008WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010009(
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 WDI_ControlBlockType* pWDICtx,
10011 WDI_EventInfoType* pEventData
10012)
10013{
10014 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10015 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10016 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010017 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010018 wpt_uint16 usDataOffset = 0;
10019 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10024 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010025 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010026
10027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10028
10029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010031 -------------------------------------------------------------------------*/
10032 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10033 ( NULL == pEventData->pCBfnc ))
10034 {
10035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010036 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 }
10040
10041 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10042 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10043 /*-------------------------------------------------------------------------
10044 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 -------------------------------------------------------------------------*/
10047 wpalMutexAcquire(&pWDICtx->wptMutex);
10048
10049 /*------------------------------------------------------------------------
10050 Find the BSS for which the request is made and identify WDI session
10051 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10053 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010054 &macBSSID))
10055 {
10056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010057 "This station does not exist in the WDI Station Table %d",
10058 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 }
10062
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10064 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 {
10066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010067 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010069
10070 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010072 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010073
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 /*------------------------------------------------------------------------
10075 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 ------------------------------------------------------------------------*/
10078 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10079 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10081 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10082 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010083
Jeff Johnsone7245742012-09-05 17:12:55 -070010084 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010085 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010087 }
10088
10089
10090 wpalMutexRelease(&pWDICtx->wptMutex);
10091 /*-----------------------------------------------------------------------
10092 Get message buffer
10093 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10096 &pSendBuffer, &usDataOffset, &usSendSize))||
10097 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10098 {
10099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010100 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 }
10105 /*-----------------------------------------------------------------------
10106 Copy the STA Key parameters into the HAL message
10107 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010109 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10110
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10113
10114 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10115
10116 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10117
10118 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10119
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10121 keyIndex++)
10122 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10125 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10126 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10127 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10128 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010129
10130 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10131 {
10132 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10133 {
10134 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10135 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10136 }
10137
10138 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10139 {
10140 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10141 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10142 }
10143
10144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10145 "%s: Negated Keys", __func__);
10146 }
10147 else
10148 {
10149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10150 "%s: No change in Keys", __func__);
10151 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010154 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10155 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10156 WDI_MAX_KEY_LENGTH);
10157 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010162 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 wpalMemoryCopy( pSendBuffer+usDataOffset,
10164 &halSetStaKeyReqMsg.setStaKeyParams,
10165 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010166
10167 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010169
10170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10174 wdiSetSTAKeyRspCb, pEventData->pUserData,
10175 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010176
10177}/*WDI_ProcessSetSTABcastKeyReq*/
10178
10179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010181 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010182
10183 @param pWDICtx: pointer to the WLAN DAL context
10184 pEventData: pointer to the event information structure
10185
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 @see
10187 @return Result of the function call
10188*/
10189WDI_Status
10190WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010191(
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 WDI_ControlBlockType* pWDICtx,
10193 WDI_EventInfoType* pEventData
10194)
10195{
10196 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10197 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10198 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 wpt_uint16 usDataOffset = 0;
10201 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 wpt_macAddr macBSSID;
10204 wpt_uint8 ucCurrentBSSSesIdx;
10205 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10207
10208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010210 -------------------------------------------------------------------------*/
10211 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10212 ( NULL == pEventData->pCBfnc ))
10213 {
10214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010218 }
10219
10220 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10221 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10222 /*-------------------------------------------------------------------------
10223 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010224 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010225 -------------------------------------------------------------------------*/
10226 wpalMutexAcquire(&pWDICtx->wptMutex);
10227
10228 /*------------------------------------------------------------------------
10229 Find the BSS for which the request is made and identify WDI session
10230 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010231 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10232 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 &macBSSID))
10234 {
10235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010236 "This station does not exist in the WDI Station Table %d",
10237 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010238 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 }
10241
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10243 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010244 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10246 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10247 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010248
10249 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010252
Jeff Johnson295189b2012-06-20 16:38:30 -070010253 /*------------------------------------------------------------------------
10254 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 ------------------------------------------------------------------------*/
10257 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10258 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10260 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10261 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010262
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010265 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 }
10267
10268
10269
10270 wpalMutexRelease(&pWDICtx->wptMutex);
10271 /*-----------------------------------------------------------------------
10272 Get message buffer
10273 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10276 &pSendBuffer, &usDataOffset, &usSendSize))||
10277 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10278 {
10279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010280 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010281 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 }
10285
10286 /*-----------------------------------------------------------------------
10287 Copy the Key parameters into the HAL message
10288 -----------------------------------------------------------------------*/
10289
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10292
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10295
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10298
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10301
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 wpalMemoryCopy( pSendBuffer+usDataOffset,
10303 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10304 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010305
10306 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010308
10309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010315
10316}/*WDI_ProcessRemoveSTABcastKeyReq*/
10317
10318/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010319 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010320==========================================================================*/
10321/**
10322 @brief Process Add TSpec Request function (called when Main FSM
10323 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010324
10325 @param pWDICtx: pointer to the WLAN DAL context
10326 pEventData: pointer to the event information structure
10327
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 @see
10329 @return Result of the function call
10330*/
10331WDI_Status
10332WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010333(
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 WDI_ControlBlockType* pWDICtx,
10335 WDI_EventInfoType* pEventData
10336)
10337{
10338 WDI_AddTSReqParamsType* pwdiAddTSParams;
10339 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010340 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 wpt_uint16 usDataOffset = 0;
10344 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 wpt_macAddr macBSSID;
10347 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010348
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10350
10351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010353 -------------------------------------------------------------------------*/
10354 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10355 ( NULL == pEventData->pCBfnc ))
10356 {
10357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010361 }
10362
10363 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10364 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10365 /*-------------------------------------------------------------------------
10366 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010368 -------------------------------------------------------------------------*/
10369 wpalMutexAcquire(&pWDICtx->wptMutex);
10370
10371 /*------------------------------------------------------------------------
10372 Find the BSS for which the request is made and identify WDI session
10373 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10375 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 &macBSSID))
10377 {
10378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010379 "This station does not exist in the WDI Station Table %d",
10380 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010383 }
10384
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10386 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010387 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10389 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10390 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010391
10392 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010395
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 /*------------------------------------------------------------------------
10397 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010398 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 ------------------------------------------------------------------------*/
10400 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10401 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10403 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10404 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010405
Jeff Johnsone7245742012-09-05 17:12:55 -070010406 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 }
10410
10411 wpalMutexRelease(&pWDICtx->wptMutex);
10412 /*-----------------------------------------------------------------------
10413 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010415 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10417 sizeof(halAddTsParams),
10418 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 &usSendSize))||
10420 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10421 {
10422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010423 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 }
10428
10429 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10430 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10431
10432 //TSPEC IE
10433 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10434 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010438 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010439 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010452 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010457 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010458 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010463 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010464 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10465
10466 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010471 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010472 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010473 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10481
10482 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010485 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10487
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 wpalMemoryCopy( pSendBuffer+usDataOffset,
10489 &halAddTsParams,
10490 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010491
10492 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010493 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010494
10495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010498 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010501}/*WDI_ProcessAddTSpecReq*/
10502
10503
10504/**
10505 @brief Process Del TSpec Request function (called when Main FSM
10506 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010507
10508 @param pWDICtx: pointer to the WLAN DAL context
10509 pEventData: pointer to the event information structure
10510
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 @see
10512 @return Result of the function call
10513*/
10514WDI_Status
10515WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010516(
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 WDI_ControlBlockType* pWDICtx,
10518 WDI_EventInfoType* pEventData
10519)
10520{
10521 WDI_DelTSReqParamsType* pwdiDelTSParams;
10522 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010525 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 wpt_uint16 usDataOffset = 0;
10527 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10530
10531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 -------------------------------------------------------------------------*/
10534 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10535 ( NULL == pEventData->pCBfnc ))
10536 {
10537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010538 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 }
10542
10543 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10544 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10545
10546 /*-------------------------------------------------------------------------
10547 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010549 -------------------------------------------------------------------------*/
10550 wpalMutexAcquire(&pWDICtx->wptMutex);
10551
10552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010555 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10556 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10557 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010558
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010560 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10562 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10563 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10564
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 }
10568
10569 /*------------------------------------------------------------------------
10570 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010571 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010572 ------------------------------------------------------------------------*/
10573 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10574 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10576 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10577 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010578
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010580 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010582 }
10583
10584
10585 wpalMutexRelease(&pWDICtx->wptMutex);
10586 /*-----------------------------------------------------------------------
10587 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010589 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010590 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010591 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10592 &pSendBuffer, &usDataOffset, &usSendSize))||
10593 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10594 {
10595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010596 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010597 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010600 }
10601
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 wpalMemoryCopy( pSendBuffer+usDataOffset,
10603 &pwdiDelTSParams->wdiDelTSInfo,
10604 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010605
10606 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010607 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010608
10609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010611 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10613 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010614}/*WDI_ProcessDelTSpecReq*/
10615
10616/**
10617 @brief Process Update EDCA Params Request function (called when
10618 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010619
10620 @param pWDICtx: pointer to the WLAN DAL context
10621 pEventData: pointer to the event information structure
10622
Jeff Johnson295189b2012-06-20 16:38:30 -070010623 @see
10624 @return Result of the function call
10625*/
10626WDI_Status
10627WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010628(
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 WDI_ControlBlockType* pWDICtx,
10630 WDI_EventInfoType* pEventData
10631)
10632{
10633 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10634 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 wpt_uint16 usDataOffset = 0;
10639 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010640 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10642
10643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 -------------------------------------------------------------------------*/
10646 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10647 ( NULL == pEventData->pCBfnc ))
10648 {
10649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010653 }
10654
10655 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10656 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10657 /*-------------------------------------------------------------------------
10658 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010660 -------------------------------------------------------------------------*/
10661 wpalMutexAcquire(&pWDICtx->wptMutex);
10662
10663 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10667 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10668 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010669
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 {
10672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10674 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010675
10676 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 }
10679
10680 /*------------------------------------------------------------------------
10681 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 ------------------------------------------------------------------------*/
10684 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10685 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10687 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10688 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010689
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010691 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010692 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010693 }
10694
10695
10696 wpalMutexRelease(&pWDICtx->wptMutex);
10697 /*-----------------------------------------------------------------------
10698 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010699 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10703 &pSendBuffer, &usDataOffset, &usSendSize))||
10704 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10705 {
10706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010707 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 }
10712
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 wpalMemoryCopy( pSendBuffer+usDataOffset,
10714 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10715 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010716
10717 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010718 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010719
10720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10724 wdiUpdateEDCARspCb, pEventData->pUserData,
10725 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010726}/*WDI_ProcessUpdateEDCAParamsReq*/
10727
10728/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010731
10732 @param pWDICtx: pointer to the WLAN DAL context
10733 pEventData: pointer to the event information structure
10734
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 @see
10736 @return Result of the function call
10737*/
10738WDI_Status
10739WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010740(
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 WDI_ControlBlockType* pWDICtx,
10742 WDI_EventInfoType* pEventData
10743)
10744{
10745 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10746 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010750 wpt_uint16 usDataOffset = 0;
10751 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 wpt_macAddr macBSSID;
10754
10755 tAddBASessionReqMsg halAddBASessionReq;
10756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10757
10758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010760 -------------------------------------------------------------------------*/
10761 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10762 ( NULL == pEventData->pCBfnc ))
10763 {
10764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 }
10769
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10774 /*-------------------------------------------------------------------------
10775 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010776 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010777 -------------------------------------------------------------------------*/
10778 wpalMutexAcquire(&pWDICtx->wptMutex);
10779
10780 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010781 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010782 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010783 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10784 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010785 &macBSSID))
10786 {
10787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010788 "This station does not exist in the WDI Station Table %d",
10789 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 }
10793
10794
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010796
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10800 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10801 __func__, MAC_ADDR_ARRAY(macBSSID));
10802
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 }
10806
10807 /*------------------------------------------------------------------------
10808 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 ------------------------------------------------------------------------*/
10811 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10812 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10814 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10815 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010816
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 }
10821
10822
10823 wpalMutexRelease(&pWDICtx->wptMutex);
10824 /*-----------------------------------------------------------------------
10825 Get message buffer
10826 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10828 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 sizeof(halAddBASessionReq.addBASessionParams),
10830 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10833 {
10834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010835 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010839 }
10840
10841 halAddBASessionReq.addBASessionParams.staIdx =
10842 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10843 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10844 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10845 WDI_MAC_ADDR_LEN);
10846 halAddBASessionReq.addBASessionParams.baTID =
10847 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10848 halAddBASessionReq.addBASessionParams.baPolicy =
10849 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10850 halAddBASessionReq.addBASessionParams.baBufferSize =
10851 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10852 halAddBASessionReq.addBASessionParams.baTimeout =
10853 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10854 halAddBASessionReq.addBASessionParams.baSSN =
10855 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10856 halAddBASessionReq.addBASessionParams.baDirection =
10857 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10858
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 wpalMemoryCopy( pSendBuffer+usDataOffset,
10860 &halAddBASessionReq.addBASessionParams,
10861 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010862
10863 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010864 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010865
10866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010867 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010868 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010869 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10870 wdiAddBASessionRspCb, pEventData->pUserData,
10871 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010872}/*WDI_ProcessAddBASessionReq*/
10873
10874/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010877
10878 @param pWDICtx: pointer to the WLAN DAL context
10879 pEventData: pointer to the event information structure
10880
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 @see
10882 @return Result of the function call
10883*/
10884WDI_Status
10885WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010886(
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 WDI_ControlBlockType* pWDICtx,
10888 WDI_EventInfoType* pEventData
10889)
10890{
10891 WDI_DelBAReqParamsType* pwdiDelBAParams;
10892 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 wpt_uint16 usDataOffset = 0;
10897 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 wpt_macAddr macBSSID;
10900 tDelBAParams halDelBAparam;
10901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10902
10903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 -------------------------------------------------------------------------*/
10906 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10907 ( NULL == pEventData->pCBfnc ))
10908 {
10909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010913 }
10914
10915 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10916 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10917 /*-------------------------------------------------------------------------
10918 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010919 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010920 -------------------------------------------------------------------------*/
10921 wpalMutexAcquire(&pWDICtx->wptMutex);
10922
10923 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010925 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10927 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 &macBSSID))
10929 {
10930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010931 "This station does not exist in the WDI Station Table %d",
10932 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010935 }
10936
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010938
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010940 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10942 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10943 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010944
10945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 }
10948
10949 /*------------------------------------------------------------------------
10950 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 ------------------------------------------------------------------------*/
10953 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10954 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10956 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10957 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010958
Jeff Johnsone7245742012-09-05 17:12:55 -070010959 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 }
10963
10964 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010965 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010966 sizeof(halDelBAparam),
10967 &pSendBuffer, &usDataOffset, &usSendSize))||
10968 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10969 {
10970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010971 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 }
10976
10977 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10978 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10979 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10980
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 wpalMemoryCopy( pSendBuffer+usDataOffset,
10982 &halDelBAparam,
10983 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010984
10985 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010987
10988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10992 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010993}/*WDI_ProcessDelBAReq*/
10994
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010995#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010996
10997WDI_Status
10998WDI_ProcessTSMStatsReq
10999(
11000 WDI_ControlBlockType* pWDICtx,
11001 WDI_EventInfoType* pEventData
11002)
11003{
11004 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11005 WDI_TsmRspCb wdiTSMRspCb;
11006 wpt_uint8 ucCurrentBSSSesIdx = 0;
11007 WDI_BSSSessionType* pBSSSes = NULL;
11008 wpt_uint8* pSendBuffer = NULL;
11009 wpt_uint16 usDataOffset = 0;
11010 wpt_uint16 usSendSize = 0;
11011 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11012 tTsmStatsParams halTsmStatsReqParams = {0};
11013
11014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11015
11016 /*-------------------------------------------------------------------------
11017 Sanity check
11018 -------------------------------------------------------------------------*/
11019 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11020 ( NULL == pEventData->pCBfnc ))
11021 {
11022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011023 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 WDI_ASSERT(0);
11025 return WDI_STATUS_E_FAILURE;
11026 }
11027
11028 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11029 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11030 /*-------------------------------------------------------------------------
11031 Check to see if we are in the middle of an association, if so queue, if
11032 not it means it is free to process request
11033 -------------------------------------------------------------------------*/
11034 wpalMutexAcquire(&pWDICtx->wptMutex);
11035
11036 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11037 if ( NULL == pBSSSes )
11038 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11040 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11041 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011042
11043 wpalMutexRelease(&pWDICtx->wptMutex);
11044 return WDI_STATUS_E_NOT_ALLOWED;
11045 }
11046
11047 /*------------------------------------------------------------------------
11048 Check if this BSS is being currently processed or queued,
11049 if queued - queue the new request as well
11050 ------------------------------------------------------------------------*/
11051 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11052 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011054 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011055 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011056
11057 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11058 wpalMutexRelease(&pWDICtx->wptMutex);
11059 return wdiStatus;
11060 }
11061
11062 wpalMutexRelease(&pWDICtx->wptMutex);
11063 /*-----------------------------------------------------------------------
11064 Get message buffer
11065 ! TO DO : proper conversion into the HAL Message Request Format
11066 -----------------------------------------------------------------------*/
11067 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11068 sizeof(halTsmStatsReqParams),
11069 &pSendBuffer, &usDataOffset, &usSendSize))||
11070 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11071 {
11072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011073 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 pEventData, pwdiTSMParams, wdiTSMRspCb);
11075 WDI_ASSERT(0);
11076 return WDI_STATUS_E_FAILURE;
11077 }
11078
11079 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11080 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11081 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11082 WDI_MAC_ADDR_LEN);
11083 wpalMemoryCopy( pSendBuffer+usDataOffset,
11084 &halTsmStatsReqParams,
11085 sizeof(halTsmStatsReqParams));
11086
11087 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11088 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11089
11090 /*-------------------------------------------------------------------------
11091 Send TSM Stats Request to HAL
11092 -------------------------------------------------------------------------*/
11093 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11094 wdiTSMRspCb, pEventData->pUserData,
11095 WDI_TSM_STATS_RESP);
11096}/*WDI_ProcessTSMStatsReq*/
11097
11098#endif
11099
11100
11101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011102 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011103 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011104
11105 @param pWDICtx: pointer to the WLAN DAL context
11106 pEventData: pointer to the event information structure
11107
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 @see
11109 @return Result of the function call
11110*/
11111WDI_Status
11112WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011113(
Jeff Johnson295189b2012-06-20 16:38:30 -070011114 WDI_ControlBlockType* pWDICtx,
11115 WDI_EventInfoType* pEventData
11116)
11117{
11118 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11119 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 wpt_uint16 usDataOffset = 0;
11122 wpt_uint16 usSendSize = 0;
11123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11124
11125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011127 -------------------------------------------------------------------------*/
11128 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11129 ( NULL == pEventData->pCBfnc ))
11130 {
11131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011135 }
11136
11137 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11138 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11139 /*-----------------------------------------------------------------------
11140 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011141 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011142 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011143 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011144 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11145 &pSendBuffer, &usDataOffset, &usSendSize))||
11146 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11147 {
11148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011149 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011150 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011153 }
11154
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 wpalMemoryCopy( pSendBuffer+usDataOffset,
11156 &pwdiFlushAcParams->wdiFlushAcInfo,
11157 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011158
11159 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011161
11162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011164 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011165 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11166 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011167}/*WDI_ProcessFlushAcReq*/
11168
11169/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011170 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011171 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011172
11173 @param pWDICtx: pointer to the WLAN DAL context
11174 pEventData: pointer to the event information structure
11175
Jeff Johnson295189b2012-06-20 16:38:30 -070011176 @see
11177 @return Result of the function call
11178*/
11179WDI_Status
11180WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011181(
Jeff Johnson295189b2012-06-20 16:38:30 -070011182 WDI_ControlBlockType* pWDICtx,
11183 WDI_EventInfoType* pEventData
11184)
11185{
11186 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11187 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011189 wpt_uint16 usDataOffset = 0;
11190 wpt_uint16 usSendSize = 0;
11191
11192 tBtAmpEventMsg haltBtAmpEventMsg;
11193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11194
11195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011197 -------------------------------------------------------------------------*/
11198 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11199 ( NULL == pEventData->pCBfnc ))
11200 {
11201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011202 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011205 }
11206
11207 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11208 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11209 /*-----------------------------------------------------------------------
11210 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011212 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011213 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011214 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11215 &pSendBuffer, &usDataOffset, &usSendSize))||
11216 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11217 {
11218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011219 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 }
11224
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 wpalMemoryCopy( pSendBuffer+usDataOffset,
11228 &haltBtAmpEventMsg.btAmpEventParams,
11229 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011230
11231 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011233
11234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011237 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11238 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011239}/*WDI_ProcessBtAmpEventReq*/
11240
11241/**
11242 @brief Process Add STA self Request function (called when Main FSM
11243 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011244
11245 @param pWDICtx: pointer to the WLAN DAL context
11246 pEventData: pointer to the event information structure
11247
Jeff Johnson295189b2012-06-20 16:38:30 -070011248 @see
11249 @return Result of the function call
11250*/
11251WDI_Status
11252WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011253(
Jeff Johnson295189b2012-06-20 16:38:30 -070011254 WDI_ControlBlockType* pWDICtx,
11255 WDI_EventInfoType* pEventData
11256)
11257{
11258 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11259 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 wpt_uint16 usDataOffset = 0;
11262 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011263 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11265
11266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011267 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011268 -------------------------------------------------------------------------*/
11269 if (( NULL == pEventData ) ||
11270 ( NULL == pEventData->pEventData) ||
11271 ( NULL == pEventData->pCBfnc))
11272 {
11273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011277 }
11278
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011281 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011282 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11283 /*-----------------------------------------------------------------------
11284 Get message buffer
11285 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011286 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11287 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011288 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011290 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011291 {
11292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011293 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 }
11298
11299 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011300 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011301 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11302
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011304 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11305 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11306 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11307 {
11308 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11309 }
11310 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11311 VOS_P2P_CLIENT_MODE) ||
11312 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11313 VOS_P2P_DEVICE))
11314 {
11315 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11316 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011318 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011319
11320 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011321 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011322
11323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011326 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11327 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11328 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011329}/*WDI_ProcessAddSTASelfReq*/
11330
11331
11332
11333/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011336
11337 @param pWDICtx: pointer to the WLAN DAL context
11338 pEventData: pointer to the event information structure
11339
Jeff Johnson295189b2012-06-20 16:38:30 -070011340 @see
11341 @return Result of the function call
11342*/
11343WDI_Status
11344WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011345(
Jeff Johnson295189b2012-06-20 16:38:30 -070011346 WDI_ControlBlockType* pWDICtx,
11347 WDI_EventInfoType* pEventData
11348)
11349{
11350 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11351 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011352 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011353 wpt_uint16 usDataOffset = 0;
11354 wpt_uint16 usSendSize = 0;
11355 tDelStaSelfParams halSetDelSelfSTAParams;
11356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11357
11358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011360 -------------------------------------------------------------------------*/
11361 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11362 ( NULL == pEventData->pCBfnc ))
11363 {
11364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 }
11369
Jeff Johnsone7245742012-09-05 17:12:55 -070011370 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11372 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11373
11374 /*-----------------------------------------------------------------------
11375 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011376 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011377 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011379 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11380 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11383 {
11384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011385 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 }
11390
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11393
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11395 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011396
11397 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011398 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011399
11400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011402 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011403 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11404 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 WDI_DEL_STA_SELF_RESP);
11406
11407}
11408
Jeff Johnsone7245742012-09-05 17:12:55 -070011409#ifdef FEATURE_OEM_DATA_SUPPORT
11410/**
11411 @brief Process Start Oem Data Request function (called when Main
11412 FSM allows it)
11413
11414 @param pWDICtx: pointer to the WLAN DAL context
11415 pEventData: pointer to the event information structure
11416
11417 @see
11418 @return Result of the function call
11419*/
11420WDI_Status
11421WDI_ProcessStartOemDataReq
11422(
11423 WDI_ControlBlockType* pWDICtx,
11424 WDI_EventInfoType* pEventData
11425)
11426{
11427 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11428 WDI_oemDataRspCb wdiOemDataRspCb;
11429 wpt_uint8* pSendBuffer = NULL;
11430 wpt_uint16 usDataOffset = 0;
11431 wpt_uint16 usSendSize = 0;
11432 wpt_uint16 reqLen;
11433 tStartOemDataReqParams* halStartOemDataReqParams;
11434
11435 /*-------------------------------------------------------------------------
11436 Sanity check
11437 -------------------------------------------------------------------------*/
11438 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11439 ( NULL == pEventData->pCBfnc ))
11440 {
11441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011442 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 WDI_ASSERT(0);
11444 return WDI_STATUS_E_FAILURE;
11445 }
11446
11447 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11448 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11449
11450 /*-----------------------------------------------------------------------
11451 Get message buffer
11452 -----------------------------------------------------------------------*/
11453
11454 reqLen = sizeof(tStartOemDataReqParams);
11455
11456 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11457 WDI_START_OEM_DATA_REQ, reqLen,
11458 &pSendBuffer, &usDataOffset, &usSendSize))||
11459 (usSendSize < (usDataOffset + reqLen)))
11460 {
11461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011462 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11464 WDI_ASSERT(0);
11465 return WDI_STATUS_E_FAILURE;
11466 }
11467
11468 //copying WDI OEM DATA REQ PARAMS to shared memory
11469 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11470
11471 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11472 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11473
11474 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11475 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11476
11477 /*-------------------------------------------------------------------------
11478 Send Start Request to HAL
11479 -------------------------------------------------------------------------*/
11480 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11481 wdiOemDataRspCb, pEventData->pUserData,
11482 WDI_START_OEM_DATA_RESP);
11483}/*WDI_ProcessStartOemDataReq*/
11484#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011485
11486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011489
11490 @param pWDICtx: pointer to the WLAN DAL context
11491 pEventData: pointer to the event information structure
11492
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 @see
11494 @return Result of the function call
11495*/
11496WDI_Status
11497WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011498(
Jeff Johnson295189b2012-06-20 16:38:30 -070011499 WDI_ControlBlockType* pWDICtx,
11500 WDI_EventInfoType* pEventData
11501)
11502{
11503 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11504 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 wpt_uint16 usDataOffset = 0;
11507 wpt_uint16 usSendSize = 0;
11508 tHalWlanHostResumeReqParam halResumeReqParams;
11509
11510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11511
11512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011514 -------------------------------------------------------------------------*/
11515 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11516 ( NULL == pEventData->pCBfnc ))
11517 {
11518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011519 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011522 }
11523
11524 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11525 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11526
11527 /*-----------------------------------------------------------------------
11528 Get message buffer
11529 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11532 &pSendBuffer, &usDataOffset, &usSendSize))||
11533 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11534 {
11535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011536 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 }
11541
Jeff Johnsone7245742012-09-05 17:12:55 -070011542 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011543 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011544
11545 wpalMemoryCopy( pSendBuffer+usDataOffset,
11546 &halResumeReqParams,
11547 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011548
11549 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011550 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011551
11552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011553 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011554 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11556 wdiHostResumeRspCb, pEventData->pUserData,
11557 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011558}/*WDI_ProcessHostResumeReq*/
11559
11560/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011563
11564 @param pWDICtx: pointer to the WLAN DAL context
11565 pEventData: pointer to the event information structure
11566
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 @see
11568 @return Result of the function call
11569*/
11570WDI_Status
11571WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011572(
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 WDI_ControlBlockType* pWDICtx,
11574 WDI_EventInfoType* pEventData
11575)
11576{
11577 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11578 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 wpt_uint16 usDataOffset = 0;
11581 wpt_uint16 usSendSize = 0;
11582 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11584
11585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 -------------------------------------------------------------------------*/
11588 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11589 ( NULL == pEventData->pCBfnc ))
11590 {
11591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011592 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 }
11596
11597 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11598 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011599
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 /*-----------------------------------------------------------------------
11601 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 sizeof(halTxPerTrackingReqParam),
11606 &pSendBuffer, &usDataOffset, &usSendSize))||
11607 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11608 {
11609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011610 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011614 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011615
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11617 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11618 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11619 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011620
11621 wpalMemoryCopy( pSendBuffer+usDataOffset,
11622 &halTxPerTrackingReqParam,
11623 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011624
11625 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011626 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011627
11628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11632 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011633}/*WDI_ProcessSetTxPerTrackingReq*/
11634
11635/*=========================================================================
11636 Indications
11637=========================================================================*/
11638
11639/**
11640 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011641
11642 @param pWDICtx: pointer to the WLAN DAL context
11643 pEventData: pointer to the event information structure
11644
Jeff Johnson295189b2012-06-20 16:38:30 -070011645 @see
11646 @return Result of the function call
11647*/
11648WDI_Status
11649WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011650(
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 WDI_ControlBlockType* pWDICtx,
11652 WDI_EventInfoType* pEventData
11653)
11654{
11655 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011656 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011657 wpt_uint16 usDataOffset = 0;
11658 wpt_uint16 usSendSize = 0;
11659 WDI_Status wdiStatus;
11660 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11662
11663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 -------------------------------------------------------------------------*/
11666 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11667 {
11668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011669 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 }
11673
11674 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11675
11676 /*-----------------------------------------------------------------------
11677 Get message buffer
11678 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011679 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11680 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011681 sizeof(halWlanSuspendIndparams),
11682 &pSendBuffer, &usDataOffset, &usSendSize))||
11683 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11684 {
11685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11686 "Unable to get send buffer in Suspend Ind ");
11687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011689 }
11690
11691 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11692 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11693
Jeff Johnsone7245742012-09-05 17:12:55 -070011694 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011695 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011696
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11698 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011699
11700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011701 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011702 -------------------------------------------------------------------------*/
11703 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011704 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011705
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011707 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11708}/*WDI_ProcessHostSuspendInd*/
11709
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011710
11711
11712/**
11713 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11714
11715 @param pWDICtx: pointer to the WLAN DAL context
11716 pEventData: pointer to the event information structure
11717
11718 @see
11719 @return Result of the function call
11720*/
11721WDI_Status
11722WDI_ProcessTrafficStatsInd
11723(
11724 WDI_ControlBlockType* pWDICtx,
11725 WDI_EventInfoType* pEventData
11726)
11727{
11728 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11729 wpt_uint8* pSendBuffer = NULL;
11730 wpt_uint16 usDataOffset = 0;
11731 wpt_uint16 usSendSize = 0;
11732 WDI_Status wdiStatus;
11733 tStatsClassBIndParams* pStatsClassBIndParams;
11734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11735
11736 /*-------------------------------------------------------------------------
11737 Sanity check
11738 -------------------------------------------------------------------------*/
11739 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11740 {
11741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11742 "%s: Invalid parameters in Traffic Stats ind",__func__);
11743 WDI_ASSERT(0);
11744 return WDI_STATUS_E_FAILURE;
11745 }
11746
11747 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11748
11749 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11750 {
11751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11752 "%s: Invalid parameters in Traffic Stats ind",__func__);
11753 WDI_ASSERT(0);
11754 return WDI_STATUS_E_FAILURE;
11755 }
11756
11757 /*-----------------------------------------------------------------------
11758 Get message buffer
11759 -----------------------------------------------------------------------*/
11760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11761 WDI_TRAFFIC_STATS_IND,
11762 sizeof(tStatsClassBIndParams),
11763 &pSendBuffer, &usDataOffset, &usSendSize))||
11764 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11765 {
11766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11767 "Unable to get send buffer in Traffic Stats Ind ");
11768 WDI_ASSERT(0);
11769 return WDI_STATUS_E_FAILURE;
11770 }
11771
11772 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11773
11774 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11775
11776 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11777 pTrafficStatsIndParams->pTrafficStats,
11778 pTrafficStatsIndParams->length);
11779
11780 /*-------------------------------------------------------------------------
11781 Send Suspend Request to HAL
11782 -------------------------------------------------------------------------*/
11783 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11784 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11785
11786 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11787 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11788}/*WDI_ProcessTrafficStatsInd*/
11789
Chet Lanctot186b5732013-03-18 10:26:30 -070011790#ifdef WLAN_FEATURE_11W
11791/**
11792 @brief Process Exclude Unencrypted Indications function (called
11793 when Main FSM allows it)
11794
11795 @param pWDICtx: pointer to the WLAN DAL context
11796 pEventData: pointer to the event information structure
11797
11798 @see
11799 @return Result of the function call
11800*/
11801WDI_Status
11802WDI_ProcessExcludeUnencryptInd
11803(
11804 WDI_ControlBlockType* pWDICtx,
11805 WDI_EventInfoType* pEventData
11806)
11807{
11808 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11809 wpt_uint8* pSendBuffer = NULL;
11810 wpt_uint16 usDataOffset = 0;
11811 wpt_uint16 usSendSize = 0;
11812 WDI_Status wdiStatus;
11813 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11815
11816 /*-------------------------------------------------------------------------
11817 Sanity check
11818 -------------------------------------------------------------------------*/
11819 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11820 {
11821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11822 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11823 WDI_ASSERT(0);
11824 return WDI_STATUS_E_FAILURE;
11825 }
11826
11827 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11828
11829 /*-----------------------------------------------------------------------
11830 Get message buffer
11831 -----------------------------------------------------------------------*/
11832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11833 WDI_EXCLUDE_UNENCRYPTED_IND,
11834 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11835 &pSendBuffer, &usDataOffset, &usSendSize))||
11836 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11837 {
11838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11839 "Unable to get send buffer in Exclude Unencrypted Ind ");
11840 WDI_ASSERT(0);
11841 return WDI_STATUS_E_FAILURE;
11842 }
11843
11844 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11845
11846 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11847
11848 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11849 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11850
11851 /*-------------------------------------------------------------------------
11852 Send Suspend Request to HAL
11853 -------------------------------------------------------------------------*/
11854 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11855 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11856
11857 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11858 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11859}/*WDI_ProcessExcludeUnencryptInd*/
11860#endif
11861
Yue Mab9c86f42013-08-14 15:59:08 -070011862/**
11863 @brief Process Add Periodic Tx Pattern Indication function (called when
11864 Main FSM allows it)
11865
11866 @param pWDICtx: pointer to the WLAN DAL context
11867 pEventData: pointer to the event information structure
11868
11869 @see
11870 @return Result of the function call
11871*/
11872WDI_Status
11873WDI_ProcessAddPeriodicTxPtrnInd
11874(
11875 WDI_ControlBlockType* pWDICtx,
11876 WDI_EventInfoType* pEventData
11877)
11878{
11879 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11880 wpt_uint8* pSendBuffer = NULL;
11881 wpt_uint16 usDataOffset = 0;
11882 wpt_uint16 usSendSize = 0;
11883 WDI_Status wdiStatus;
11884 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11885 wpt_uint8 selfStaIdx = 0;
11886
11887 /*-------------------------------------------------------------------------
11888 Sanity check
11889 -------------------------------------------------------------------------*/
11890 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11891 {
11892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11893 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11894 WDI_ASSERT(0);
11895 return WDI_STATUS_E_FAILURE;
11896 }
11897
11898 pAddPeriodicTxPtrnParams =
11899 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11900
11901 /*------------------------------------------------------------------------
11902 Get message buffer
11903 ------------------------------------------------------------------------*/
11904 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11905 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11906 &pSendBuffer, &usDataOffset, &usSendSize))||
11907 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11908 {
11909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11910 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11911 __func__);
11912 WDI_ASSERT(0);
11913 return WDI_STATUS_E_FAILURE;
11914 }
11915
11916 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11917
11918 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11919 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11920 &selfStaIdx))
11921 {
11922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11923 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011924 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011925
11926 return WDI_STATUS_E_FAILURE;
11927 }
11928
11929 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11930 halAddPeriodicTxPtrn->ucPtrnId =
11931 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11932 halAddPeriodicTxPtrn->usPtrnSize =
11933 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11934 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11935 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11936
11937 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11938 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11939 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11940
11941 /*-------------------------------------------------------------------------
11942 Send Indication to HAL
11943 -------------------------------------------------------------------------*/
11944 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11945 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11946
11947 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11948
11949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11950 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11951
11952 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11953} /* WDI_ProcessAddPeriodicTxPtrnInd */
11954
11955/**
11956 @brief Process Delete Periodic Tx Pattern Indication function (called when
11957 Main FSM allows it)
11958
11959 @param pWDICtx: pointer to the WLAN DAL context
11960 pEventData: pointer to the event information structure
11961
11962 @see
11963 @return Result of the function call
11964*/
11965WDI_Status
11966WDI_ProcessDelPeriodicTxPtrnInd
11967(
11968 WDI_ControlBlockType* pWDICtx,
11969 WDI_EventInfoType* pEventData
11970)
11971{
11972 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11973 wpt_uint8* pSendBuffer = NULL;
11974 wpt_uint16 usDataOffset = 0;
11975 wpt_uint16 usSendSize = 0;
11976 WDI_Status wdiStatus;
11977 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11978 wpt_uint8 selfStaIdx = 0;
11979
11980 /*-------------------------------------------------------------------------
11981 Sanity check
11982 -------------------------------------------------------------------------*/
11983 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11984 {
11985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11986 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11987 WDI_ASSERT(0);
11988 return WDI_STATUS_E_FAILURE;
11989 }
11990
11991 pDelPeriodicTxPtrnParams =
11992 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11993
11994 /*------------------------------------------------------------------------
11995 Get message buffer
11996 ------------------------------------------------------------------------*/
11997 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11998 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11999 &pSendBuffer, &usDataOffset, &usSendSize))||
12000 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12001 {
12002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12003 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12004 __func__);
12005 WDI_ASSERT(0);
12006 return WDI_STATUS_E_FAILURE;
12007 }
12008
12009 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12010
12011 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12012 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12013 &selfStaIdx))
12014 {
12015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12016 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012017 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012018
12019 return WDI_STATUS_E_FAILURE;
12020 }
12021
12022 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12023 halDelPeriodicTxPtrn->uPatternIdBitmap =
12024 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12025
12026 /*-------------------------------------------------------------------------
12027 Send Indication to HAL
12028 -------------------------------------------------------------------------*/
12029 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12030 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12031
12032 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12033
12034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12035 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12036
12037 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12038} /* WDI_ProcessDelPeriodicTxPtrnInd */
12039
Jeff Johnson295189b2012-06-20 16:38:30 -070012040/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012041 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012042==========================================================================*/
12043/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012046
12047 @param pWDICtx: pointer to the WLAN DAL context
12048 pEventData: pointer to the event information structure
12049
Jeff Johnson295189b2012-06-20 16:38:30 -070012050 @see
12051 @return Result of the function call
12052*/
12053WDI_Status
12054WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012055(
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 WDI_ControlBlockType* pWDICtx,
12057 WDI_EventInfoType* pEventData
12058)
12059{
12060 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12061 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 wpt_uint16 usDataOffset = 0;
12064 wpt_uint16 usSendSize = 0;
12065 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12067
12068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 -------------------------------------------------------------------------*/
12071 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12072 ( NULL == pEventData->pCBfnc ))
12073 {
12074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012078 }
12079
12080 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12081 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12082 /*-----------------------------------------------------------------------
12083 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012087 sizeof(halSwitchChannelReq.switchChannelParams),
12088 &pSendBuffer, &usDataOffset, &usSendSize))||
12089 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12090 {
12091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012092 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012093 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012096 }
12097
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012100#ifndef WLAN_FEATURE_VOWIFI
12101 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12103#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12106
12107#ifdef WLAN_FEATURE_VOWIFI
12108 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012109 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012110 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12111 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12112 WDI_MAC_ADDR_LEN);
12113 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12114 pwdiSwitchChParams->wdiChInfo.macBSSId,
12115 WDI_MAC_ADDR_LEN);
12116#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012117 wpalMemoryCopy( pSendBuffer+usDataOffset,
12118 &halSwitchChannelReq.switchChannelParams,
12119 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012120
12121 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012123
12124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12128 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012129}/*WDI_ProcessChannelSwitchReq*/
12130
12131/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012132 @brief Process Channel Switch Request function (called when
12133 Main FSM allows it)
12134
12135 @param pWDICtx: pointer to the WLAN DAL context
12136 pEventData: pointer to the event information structure
12137
12138 @see
12139 @return Result of the function call
12140*/
12141WDI_Status WDI_ProcessChannelSwitchReq_V1
12142(
12143 WDI_ControlBlockType* pWDICtx,
12144 WDI_EventInfoType* pEventData
12145)
12146{
12147 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12148 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12149 wpt_uint8* pSendBuffer = NULL;
12150 wpt_uint16 usDataOffset = 0;
12151 wpt_uint16 usSendSize = 0;
12152 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12154
12155 /*-------------------------------------------------------------------------
12156 Sanity check
12157 -------------------------------------------------------------------------*/
12158 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12159 ( NULL == pEventData->pCBfnc ))
12160 {
12161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12162 "%s: Invalid parameters", __func__);
12163 WDI_ASSERT(0);
12164 return WDI_STATUS_E_FAILURE;
12165 }
12166
12167 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12168 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12169 /*-----------------------------------------------------------------------
12170 Get message buffer
12171 ! TO DO : proper conversion into the HAL Message Request Format
12172 -----------------------------------------------------------------------*/
12173 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12174 WDI_CH_SWITCH_REQ_V1,
12175 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12176 &pSendBuffer, &usDataOffset, &usSendSize))||
12177 ( usSendSize < (usDataOffset +
12178 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12179 {
12180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12181 "Unable to get send buffer in channel switch req %p %p %p",
12182 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12183 WDI_ASSERT(0);
12184 return WDI_STATUS_E_FAILURE;
12185 }
12186
12187 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12188 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12189
12190 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12191 pwdiSwitchChParams->wdiChInfo.ucChannel;
12192#ifndef WLAN_FEATURE_VOWIFI
12193 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12194 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12195#endif
12196 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12197 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12198
12199#ifdef WLAN_FEATURE_VOWIFI
12200 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12201 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12202 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12203 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12204 WDI_MAC_ADDR_LEN);
12205 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12206 pwdiSwitchChParams->wdiChInfo.macBSSId,
12207 WDI_MAC_ADDR_LEN);
12208#endif
12209 wpalMemoryCopy( pSendBuffer+usDataOffset,
12210 &halSwitchChannelReq.switchChannelParams_V1,
12211 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12212
12213 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12214 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12215
12216 /*-------------------------------------------------------------------------
12217 Send Switch Channel Request to HAL
12218 -------------------------------------------------------------------------*/
12219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12220 wdiSwitchChRspCb, pEventData->pUserData,
12221 WDI_CH_SWITCH_RESP_V1);
12222}/*WDI_ProcessChannelSwitchReq_V1*/
12223
12224/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012227
12228 @param pWDICtx: pointer to the WLAN DAL context
12229 pEventData: pointer to the event information structure
12230
Jeff Johnson295189b2012-06-20 16:38:30 -070012231 @see
12232 @return Result of the function call
12233*/
12234WDI_Status
12235WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012236(
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 WDI_ControlBlockType* pWDICtx,
12238 WDI_EventInfoType* pEventData
12239)
12240{
12241 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12242 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012243 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 wpt_uint16 usDataOffset = 0;
12247 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012249
Jeff Johnsone7245742012-09-05 17:12:55 -070012250 tConfigStaReqMsg halConfigStaReqMsg;
12251 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12253
12254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012256 -------------------------------------------------------------------------*/
12257 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12258 ( NULL == pEventData->pCBfnc ))
12259 {
12260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012264 }
12265
Abhishek Singh6927fa02014-06-27 17:19:55 +053012266 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012267 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12268 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12269 /*-------------------------------------------------------------------------
12270 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012271 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012272 -------------------------------------------------------------------------*/
12273 wpalMutexAcquire(&pWDICtx->wptMutex);
12274
12275 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012276 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12279 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12280 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012281
Jeff Johnsone7245742012-09-05 17:12:55 -070012282 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12285 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12286 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012287
12288 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 }
12291
12292 /*------------------------------------------------------------------------
12293 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 ------------------------------------------------------------------------*/
12296 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12297 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12299 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12300 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012301
Jeff Johnsone7245742012-09-05 17:12:55 -070012302 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012303 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012305 }
12306
12307 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012308
12309 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12310#ifdef WLAN_FEATURE_11AC
12311 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012312 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 else
12314#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012315 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012316
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 /*-----------------------------------------------------------------------
12318 Get message buffer
12319 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12321 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 {
12325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012326 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 }
12331
12332 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 &pwdiConfigSTAParams->wdiReqInfo);
12335
12336 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12337 {
12338 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 WDI_STATableFindStaidByAddr(pWDICtx,
12341 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 {
12344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012345 MAC_ADDRESS_STR
12346 ": This station does not exist in the WDI Station Table",
12347 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012349 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 }
12352 }
12353 else
12354 {
12355 /* Need to fill in the STA Index to invalid, since at this point we have not
12356 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012357 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 }
12359
12360 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012361 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012362
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 wpalMemoryCopy( pSendBuffer+usDataOffset,
12364 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012365 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012366
12367 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012368 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012369
Jeff Johnsone7245742012-09-05 17:12:55 -070012370 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12371 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 sizeof(pWDICtx->wdiCachedConfigStaReq));
12373
12374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012375 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012376 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012377 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12378 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012379}/*WDI_ProcessConfigStaReq*/
12380
12381
12382/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012385
12386 @param pWDICtx: pointer to the WLAN DAL context
12387 pEventData: pointer to the event information structure
12388
Jeff Johnson295189b2012-06-20 16:38:30 -070012389 @see
12390 @return Result of the function call
12391*/
12392WDI_Status
12393WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012394(
Jeff Johnson295189b2012-06-20 16:38:30 -070012395 WDI_ControlBlockType* pWDICtx,
12396 WDI_EventInfoType* pEventData
12397)
12398{
12399 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12400 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012402 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012403 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012404 wpt_uint16 usDataOffset = 0;
12405 wpt_uint16 usSendSize = 0;
12406 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12409
12410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012412 -------------------------------------------------------------------------*/
12413 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12414 ( NULL == pEventData->pCBfnc ))
12415 {
12416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012420 }
12421
12422 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12423 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12424 /*-------------------------------------------------------------------------
12425 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012426 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012427 -------------------------------------------------------------------------*/
12428 wpalMutexAcquire(&pWDICtx->wptMutex);
12429
12430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012432 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012433 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12434 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12435 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012436
Jeff Johnsone7245742012-09-05 17:12:55 -070012437 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012438 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012440 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12441 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 }
12443 else
12444 {
12445 /*------------------------------------------------------------------------
12446 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012447 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 ------------------------------------------------------------------------*/
12449 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12450 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12452 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12453 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12454
12455 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012457 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012458 }
12459 }
12460 /* If the link is set to enter IDLE - the Session allocated for this BSS
12461 will be deleted on the Set Link State response coming from HAL
12462 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12465
12466 wpalMutexRelease(&pWDICtx->wptMutex);
12467 /*-----------------------------------------------------------------------
12468 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012471
12472 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 sizeof(halLinkStateReqMsg),
12474 &pSendBuffer, &usDataOffset, &usSendSize))||
12475 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12476 {
12477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012478 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 }
12483
12484 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12485 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12486
12487 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12488 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12489
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12492
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 wpalMemoryCopy( pSendBuffer+usDataOffset,
12494 &halLinkStateReqMsg,
12495 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012496
12497 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012499
12500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12504 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012505}/*WDI_ProcessSetLinkStateReq*/
12506
12507
12508/**
12509 @brief Process Get Stats Request function (called when Main FSM
12510 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012511
12512 @param pWDICtx: pointer to the WLAN DAL context
12513 pEventData: pointer to the event information structure
12514
Jeff Johnson295189b2012-06-20 16:38:30 -070012515 @see
12516 @return Result of the function call
12517*/
12518WDI_Status
12519WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012520(
Jeff Johnson295189b2012-06-20 16:38:30 -070012521 WDI_ControlBlockType* pWDICtx,
12522 WDI_EventInfoType* pEventData
12523)
12524{
12525 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12526 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012527 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012528 wpt_uint16 usDataOffset = 0;
12529 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 WDI_BSSSessionType* pBSSSes = NULL;
12532 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 tHalStatsReqMsg halStatsReqMsg;
12535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12536
12537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 -------------------------------------------------------------------------*/
12540 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12541 ( NULL == pEventData->pCBfnc ) )
12542 {
12543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 }
12548
12549 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12550 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12551
12552 /*-------------------------------------------------------------------------
12553 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 -------------------------------------------------------------------------*/
12556 wpalMutexAcquire(&pWDICtx->wptMutex);
12557
12558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12562 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 &macBSSID))
12564 {
12565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012566 "This station does not exist in the WDI Station Table %d",
12567 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 }
12571
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12573 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12576 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12577 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012578
12579 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 }
12582
12583 /*------------------------------------------------------------------------
12584 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 ------------------------------------------------------------------------*/
12587 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12588 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12590 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12591 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012592
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 }
12597
12598
12599 wpalMutexRelease(&pWDICtx->wptMutex);
12600
12601 /*-----------------------------------------------------------------------
12602 Get message buffer
12603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 sizeof(halStatsReqMsg.statsReqParams),
12606 &pSendBuffer, &usDataOffset, &usSendSize))||
12607 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12608 {
12609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012610 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 }
12615
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012618 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012619 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 wpalMemoryCopy( pSendBuffer+usDataOffset,
12621 &halStatsReqMsg.statsReqParams,
12622 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012623
12624 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012626
12627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12631 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012632}/*WDI_ProcessGetStatsReq*/
12633
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012634#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012635/**
12636 @brief Process Get Roam Rssi Request function (called when Main FSM
12637 allows it)
12638
12639 @param pWDICtx: pointer to the WLAN DAL context
12640 pEventData: pointer to the event information structure
12641
12642 @see
12643 @return Result of the function call
12644*/
12645WDI_Status
12646WDI_ProcessGetRoamRssiReq
12647(
12648 WDI_ControlBlockType* pWDICtx,
12649 WDI_EventInfoType* pEventData
12650)
12651{
12652 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12653 WDI_GetStatsRspCb wdiGetStatsRspCb;
12654 wpt_uint8* pSendBuffer = NULL;
12655 wpt_uint16 usDataOffset = 0;
12656 wpt_uint16 usSendSize = 0;
12657 wpt_uint8 ucCurrentBSSSesIdx = 0;
12658 WDI_BSSSessionType* pBSSSes = NULL;
12659 wpt_macAddr macBSSID;
12660 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12661 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12663 /*-------------------------------------------------------------------------
12664 Sanity check
12665 -------------------------------------------------------------------------*/
12666 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12667 ( NULL == pEventData->pCBfnc ) )
12668 {
12669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12670 "%s: Invalid parameters", __func__);
12671 WDI_ASSERT(0);
12672 return WDI_STATUS_E_FAILURE;
12673 }
12674
12675 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12676 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12677
12678 /*-------------------------------------------------------------------------
12679 Check to see if we are in the middle of an association, if so queue, if
12680 not it means it is free to process request
12681 -------------------------------------------------------------------------*/
12682 wpalMutexAcquire(&pWDICtx->wptMutex);
12683
12684 /*------------------------------------------------------------------------
12685 Find the BSS for which the request is made
12686 ------------------------------------------------------------------------*/
12687 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12688 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12689 &macBSSID))
12690 {
12691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012692 "This station does not exist in the WDI Station Table %d",
12693 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012694 wpalMutexRelease(&pWDICtx->wptMutex);
12695 return WDI_STATUS_E_FAILURE;
12696 }
12697
12698 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12699 if ( NULL == pBSSSes )
12700 {
12701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12702 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12703 __func__, MAC_ADDR_ARRAY(macBSSID));
12704
12705 wpalMutexRelease(&pWDICtx->wptMutex);
12706 return WDI_STATUS_E_NOT_ALLOWED;
12707 }
12708
12709 /*------------------------------------------------------------------------
12710 Check if this BSS is being currently processed or queued,
12711 if queued - queue the new request as well
12712 ------------------------------------------------------------------------*/
12713 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12714 {
12715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12716 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12717 __func__, MAC_ADDR_ARRAY(macBSSID));
12718
12719 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12720 wpalMutexRelease(&pWDICtx->wptMutex);
12721 return wdiStatus;
12722 }
12723
12724 wpalMutexRelease(&pWDICtx->wptMutex);
12725
12726 /*-----------------------------------------------------------------------
12727 Get message buffer
12728 -----------------------------------------------------------------------*/
12729 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12730 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12731 &pSendBuffer, &usDataOffset, &usSendSize))||
12732 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12733 {
12734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012735 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012736 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12737 WDI_ASSERT(0);
12738 return WDI_STATUS_E_FAILURE;
12739 }
12740
12741 halRssiRoamReqMsg.roamRssiReqParams.staId =
12742 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12743 wpalMemoryCopy( pSendBuffer+usDataOffset,
12744 &halRssiRoamReqMsg.roamRssiReqParams,
12745 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12746
12747 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12748 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12749
12750 /*-------------------------------------------------------------------------
12751 Send Get STA Request to HAL
12752 -------------------------------------------------------------------------*/
12753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12754 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12755}/*WDI_ProcessGetRoamRssiReq*/
12756#endif
12757
Jeff Johnson295189b2012-06-20 16:38:30 -070012758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012759 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012760 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012761
12762 @param pWDICtx: pointer to the WLAN DAL context
12763 pEventData: pointer to the event information structure
12764
Jeff Johnson295189b2012-06-20 16:38:30 -070012765 @see
12766 @return Result of the function call
12767*/
12768WDI_Status
12769WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012770(
Jeff Johnson295189b2012-06-20 16:38:30 -070012771 WDI_ControlBlockType* pWDICtx,
12772 WDI_EventInfoType* pEventData
12773)
12774{
12775 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12776 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12777
Jeff Johnsone7245742012-09-05 17:12:55 -070012778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012779 wpt_uint16 usDataOffset = 0;
12780 wpt_uint16 usSendSize = 0;
12781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12782
12783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012785 -------------------------------------------------------------------------*/
12786 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12787 ( NULL == pEventData->pCBfnc))
12788 {
12789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 }
12794
12795 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12796 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12797
12798 /*-----------------------------------------------------------------------
12799 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012800 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 -----------------------------------------------------------------------*/
12802
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12805 &pSendBuffer, &usDataOffset, &usSendSize))||
12806 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12807 {
12808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012809 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012810 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 }
12814
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 wpalMemoryCopy( pSendBuffer+usDataOffset,
12816 &pwdiUpdateCfgParams->uConfigBufferLen,
12817 sizeof(wpt_uint32));
12818 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12819 pwdiUpdateCfgParams->pConfigBuffer,
12820 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012821
12822 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012823 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012824
12825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012827 -------------------------------------------------------------------------*/
12828
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12830 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012831
12832}/*WDI_ProcessUpdateCfgReq*/
12833
12834
12835/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012836 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012838
12839 @param pWDICtx: pointer to the WLAN DAL context
12840 pEventData: pointer to the event information structure
12841
Jeff Johnson295189b2012-06-20 16:38:30 -070012842 @see
12843 @return Result of the function call
12844*/
12845WDI_Status
12846WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012847(
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 WDI_ControlBlockType* pWDICtx,
12849 WDI_EventInfoType* pEventData
12850)
12851{
12852 WDI_AddBAReqParamsType* pwdiAddBAParams;
12853 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 wpt_uint16 usDataOffset = 0;
12858 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012859 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012860 wpt_macAddr macBSSID;
12861
12862 tAddBAReqMsg halAddBAReq;
12863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12864
12865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 -------------------------------------------------------------------------*/
12868 if (( NULL == pEventData ) ||
12869 ( NULL == pEventData->pEventData) ||
12870 ( NULL == pEventData->pCBfnc ))
12871 {
12872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 }
12877
12878 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12879 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12880
12881 /*-------------------------------------------------------------------------
12882 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 -------------------------------------------------------------------------*/
12885 wpalMutexAcquire(&pWDICtx->wptMutex);
12886
12887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12891 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 &macBSSID))
12893 {
12894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012895 "This station does not exist in the WDI Station Table %d",
12896 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 }
12900
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12902 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012903 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12905 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12906 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012907
12908 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012910 }
12911
12912 /*------------------------------------------------------------------------
12913 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 ------------------------------------------------------------------------*/
12916 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12917 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12919 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12920 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012921
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012923 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012924 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 }
12926
12927
12928 wpalMutexRelease(&pWDICtx->wptMutex);
12929 /*-----------------------------------------------------------------------
12930 Get message buffer
12931 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012933 sizeof(halAddBAReq.addBAParams),
12934 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012936 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12937 {
12938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012939 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 }
12944
Jeff Johnsone7245742012-09-05 17:12:55 -070012945 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12947 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12948#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12951#endif
12952
Jeff Johnsone7245742012-09-05 17:12:55 -070012953 wpalMemoryCopy( pSendBuffer+usDataOffset,
12954 &halAddBAReq.addBAParams,
12955 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012956
12957 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959
12960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12964 wdiAddBARspCb, pEventData->pUserData,
12965 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012966}/*WDI_ProcessAddBAReq*/
12967
12968
12969
12970/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012973
12974 @param pWDICtx: pointer to the WLAN DAL context
12975 pEventData: pointer to the event information structure
12976
Jeff Johnson295189b2012-06-20 16:38:30 -070012977 @see
12978 @return Result of the function call
12979*/
12980WDI_Status
12981WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012982(
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 WDI_ControlBlockType* pWDICtx,
12984 WDI_EventInfoType* pEventData
12985)
12986{
12987 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12988 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012989 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012991 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012992 wpt_uint16 usDataOffset = 0;
12993 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012994 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 wpt_uint16 index;
12996 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012997
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 tTriggerBAReqMsg halTriggerBAReq;
12999 tTriggerBaReqCandidate* halTriggerBACandidate;
13000 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13002
13003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013004 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013005 -------------------------------------------------------------------------*/
13006 if (( NULL == pEventData ) ||
13007 ( NULL == pEventData->pEventData ) ||
13008 ( NULL == pEventData->pCBfnc ))
13009 {
13010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013014 }
13015
13016 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13017 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13018 /*-------------------------------------------------------------------------
13019 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 -------------------------------------------------------------------------*/
13022 wpalMutexAcquire(&pWDICtx->wptMutex);
13023
13024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13028 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 &macBSSID))
13030 {
13031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013032 "This station does not exist in the WDI Station Table %d",
13033 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013034 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 }
13037
Jeff Johnsone7245742012-09-05 17:12:55 -070013038 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13039 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13042 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13043 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013044
13045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 }
13048
13049 /*------------------------------------------------------------------------
13050 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013051 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 ------------------------------------------------------------------------*/
13053 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13054 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13056 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13057 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013058
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 }
13063
13064
13065 wpalMutexRelease(&pWDICtx->wptMutex);
13066 /*-----------------------------------------------------------------------
13067 Get message buffer
13068 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013069 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13070 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013072 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13074 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013075 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13079 {
13080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013081 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 }
13086
Jeff Johnsone7245742012-09-05 17:12:55 -070013087 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013088 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013089 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013090 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13091
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 wpalMemoryCopy( pSendBuffer+usDataOffset,
13093 &halTriggerBAReq.triggerBAParams,
13094 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013095
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13098 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13099 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013100
13101 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013102 index++)
13103 {
13104 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13105 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13106 halTriggerBACandidate++;
13107 wdiTriggerBACandidate++;
13108 }
13109
13110 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013112
13113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13117 wdiTriggerBARspCb, pEventData->pUserData,
13118 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013119}/*WDI_ProcessTriggerBAReq*/
13120
13121
13122
13123/**
13124 @brief Process Update Beacon Params Request function (called when Main FSM
13125 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013126
13127 @param pWDICtx: pointer to the WLAN DAL context
13128 pEventData: pointer to the event information structure
13129
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 @see
13131 @return Result of the function call
13132*/
13133WDI_Status
13134WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013135(
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 WDI_ControlBlockType* pWDICtx,
13137 WDI_EventInfoType* pEventData
13138)
13139{
13140 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13141 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013142 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013143 wpt_uint16 usDataOffset = 0;
13144 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013145 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13147
13148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013150 -------------------------------------------------------------------------*/
13151 if (( NULL == pEventData ) ||
13152 ( NULL == pEventData->pEventData) ||
13153 ( NULL == pEventData->pCBfnc))
13154 {
13155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 }
13160
13161 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13162 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13163 /*-----------------------------------------------------------------------
13164 Get message buffer
13165 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013166 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 sizeof(halUpdateBeaconParams),
13168 &pSendBuffer, &usDataOffset, &usSendSize))||
13169 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13170 {
13171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013172 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 }
13177
13178 /*BSS Index of the BSS*/
13179 halUpdateBeaconParams.bssIdx =
13180 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13181 /*shortPreamble mode. HAL should update all the STA rates when it
13182 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13185 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13188 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13191
13192 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013193 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013194 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013201 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13205 halUpdateBeaconParams.fRIFSMode =
13206 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013207 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013208 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13209
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13211 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013212
13213 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013215
13216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13220 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013221}/*WDI_ProcessUpdateBeaconParamsReq*/
13222
13223
13224
13225/**
13226 @brief Process Send Beacon template Request function (called when Main FSM
13227 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013228
13229 @param pWDICtx: pointer to the WLAN DAL context
13230 pEventData: pointer to the event information structure
13231
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 @see
13233 @return Result of the function call
13234*/
13235WDI_Status
13236WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013237(
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 WDI_ControlBlockType* pWDICtx,
13239 WDI_EventInfoType* pEventData
13240)
13241{
13242 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13243 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 wpt_uint16 usDataOffset = 0;
13246 wpt_uint16 usSendSize = 0;
13247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13248
13249 tSendBeaconReqMsg halSendBeaconReq;
13250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 -------------------------------------------------------------------------*/
13253 if (( NULL == pEventData ) ||
13254 ( NULL == pEventData->pEventData ) ||
13255 ( NULL == pEventData->pCBfnc ))
13256 {
13257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 }
13262
13263 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13264 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13265 /*-----------------------------------------------------------------------
13266 Get message buffer
13267 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013268 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 sizeof(halSendBeaconReq.sendBeaconParam),
13270 &pSendBuffer, &usDataOffset, &usSendSize))||
13271 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13272 {
13273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013274 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 }
13279
13280 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13281 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13282 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013283 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13285 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13286 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13287 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013290 /* usP2PIeOffset should be atleast greater than timIeOffset */
13291 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13292 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13293 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13294 {
13295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13296 "Invalid usP2PIeOffset %hu",
13297 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13298 WDI_ASSERT(0);
13299 return WDI_STATUS_E_FAILURE;
13300 }
13301
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013304
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 wpalMemoryCopy( pSendBuffer+usDataOffset,
13306 &halSendBeaconReq.sendBeaconParam,
13307 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013308
13309 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013310 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013311
13312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13316 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013317}/*WDI_ProcessSendBeaconParamsReq*/
13318
13319/**
13320 @brief Process Update Beacon Params Request function (called when Main FSM
13321 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013322
13323 @param pWDICtx: pointer to the WLAN DAL context
13324 pEventData: pointer to the event information structure
13325
Jeff Johnson295189b2012-06-20 16:38:30 -070013326 @see
13327 @return Result of the function call
13328*/
13329WDI_Status
13330WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013331(
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 WDI_ControlBlockType* pWDICtx,
13333 WDI_EventInfoType* pEventData
13334)
13335{
13336 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13337 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013339 wpt_uint16 usDataOffset = 0;
13340 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13343
13344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 -------------------------------------------------------------------------*/
13347 if (( NULL == pEventData ) ||
13348 ( NULL == pEventData->pEventData) ||
13349 ( NULL == pEventData->pCBfnc))
13350 {
13351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 }
13356
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13361 /*-----------------------------------------------------------------------
13362 Get message buffer
13363 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013365 sizeof(halUpdateProbeRspTmplParams),
13366 &pSendBuffer, &usDataOffset, &usSendSize))||
13367 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13368 {
13369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013370 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 }
13375
13376 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013377 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 WDI_MAC_ADDR_LEN);
13379
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13382
13383 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13384 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013386
13387
13388 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13389 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13390 WDI_PROBE_REQ_BITMAP_IE_LEN);
13391
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 wpalMemoryCopy( pSendBuffer+usDataOffset,
13393 &halUpdateProbeRspTmplParams,
13394 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013395
13396 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013397 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013398
13399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013400 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013401 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013402 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13403 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13404 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013405}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13406
13407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013408 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013409 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013410
13411 @param pWDICtx: pointer to the WLAN DAL context
13412 pEventData: pointer to the event information structure
13413
Jeff Johnson295189b2012-06-20 16:38:30 -070013414 @see
13415 @return Result of the function call
13416*/
13417WDI_Status
13418WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013419(
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 WDI_ControlBlockType* pWDICtx,
13421 WDI_EventInfoType* pEventData
13422)
13423{
13424
13425 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13426 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13427
13428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 -------------------------------------------------------------------------*/
13431 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013432 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013433 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13436 {
13437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 }
13442
13443 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13446
13447 /*cache the wdi nv request message here if the the first fragment
13448 * To issue the request to HAL for the next fragment */
13449 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13450 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13452 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013453 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13454
13455 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13456 pWDICtx->pRspCBUserData = pEventData->pUserData;
13457 }
13458
13459 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13460}
13461
13462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013465
13466 @param pWDICtx: pointer to the WLAN DAL context
13467 pEventData: pointer to the event information structure
13468
Jeff Johnson295189b2012-06-20 16:38:30 -070013469 @see
13470 @return Result of the function call
13471*/
13472WDI_Status WDI_ProcessSetMaxTxPowerReq
13473(
13474 WDI_ControlBlockType* pWDICtx,
13475 WDI_EventInfoType* pEventData
13476)
13477{
13478 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13479 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 wpt_uint16 usDataOffset = 0;
13482 wpt_uint16 usSendSize = 0;
13483 tSetMaxTxPwrReq halSetMaxTxPower;
13484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13485
13486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 -------------------------------------------------------------------------*/
13489 if (( NULL == pEventData ) ||
13490 ( NULL == pEventData->pEventData ) ||
13491 ( NULL == pEventData->pCBfnc ))
13492 {
13493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013497 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013498 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13502
13503 /*-----------------------------------------------------------------------
13504 Get message buffer
13505 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013506if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13508 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013509 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013510)))
13511 {
13512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013513 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 }
13518
13519 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13520 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13521 WDI_MAC_ADDR_LEN);
13522
13523 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13524 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13525 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013528
13529 wpalMemoryCopy( pSendBuffer+usDataOffset,
13530 &halSetMaxTxPower.setMaxTxPwrParams,
13531 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013532
13533 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013534 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013535
13536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013539 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13540 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13541 WDI_SET_MAX_TX_POWER_RESP);
13542
Jeff Johnson295189b2012-06-20 16:38:30 -070013543}
13544
Arif Hussaina5ebce02013-08-09 15:09:58 -070013545/*
13546 @brief Process Set Max Tx Power Per Band Request function (called when Main
13547 FSM allows it)
13548
13549 @param pWDICtx: pointer to the WLAN DAL context
13550 pEventData: pointer to the event information structure
13551
13552 @see
13553 @return Result of the function call
13554*/
13555WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13556(
13557 WDI_ControlBlockType* pWDICtx,
13558 WDI_EventInfoType* pEventData
13559)
13560{
13561 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13562 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13563 wpt_uint8* pSendBuffer = NULL;
13564 wpt_uint16 usDataOffset = 0;
13565 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013566 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013567 WDI_Status rValue = WDI_STATUS_SUCCESS;
13568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13569
13570 /*-------------------------------------------------------------------------
13571 Sanity check
13572 -------------------------------------------------------------------------*/
13573 if (( NULL == pEventData ) ||
13574 ( NULL == pEventData->pEventData ) ||
13575 ( NULL == pEventData->pCBfnc ))
13576 {
13577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13578 "%s: Invalid parameters", __func__);
13579 WDI_ASSERT(0);
13580 return WDI_STATUS_E_FAILURE;
13581 }
13582 pwdiSetMaxTxPowerPerBandParams = \
13583 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13584
13585 wdiSetMaxTxPowerPerBandRspCb = \
13586 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13587
13588 /*-----------------------------------------------------------------------
13589 Get message buffer
13590 -----------------------------------------------------------------------*/
13591
13592 rValue = WDI_GetMessageBuffer(pWDICtx,
13593 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13594 sizeof(tSetMaxTxPwrPerBandParams),
13595 &pSendBuffer, &usDataOffset, &usSendSize);
13596
13597 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13598 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13599 {
13600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13601 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13602 pEventData, pwdiSetMaxTxPowerPerBandParams,
13603 wdiSetMaxTxPowerPerBandRspCb);
13604 WDI_ASSERT(0);
13605 return WDI_STATUS_E_FAILURE;
13606 }
13607
13608
Arif Hussainf8f080c2014-04-03 09:48:36 -070013609 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13610 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013611 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13612
Arif Hussainf8f080c2014-04-03 09:48:36 -070013613 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013614 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13615
13616 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13617 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13618
13619 /*-------------------------------------------------------------------------
13620 Send Set Max Tx Power Per Band Request to HAL
13621 -------------------------------------------------------------------------*/
13622 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13623 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13624 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13625}
13626
schang86c22c42013-03-13 18:41:24 -070013627/**
13628 @brief Process Set Tx Power Request function (called when Main
13629 FSM allows it)
13630
13631 @param pWDICtx: pointer to the WLAN DAL context
13632 pEventData: pointer to the event information structure
13633
13634 @see
13635 @return Result of the function call
13636*/
13637WDI_Status WDI_ProcessSetTxPowerReq
13638(
13639 WDI_ControlBlockType* pWDICtx,
13640 WDI_EventInfoType* pEventData
13641)
13642{
13643 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13644 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13645 wpt_uint8* pSendBuffer = NULL;
13646 wpt_uint16 usDataOffset = 0;
13647 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013648 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13650
13651 /*-------------------------------------------------------------------------
13652 Sanity check
13653 -------------------------------------------------------------------------*/
13654 if (( NULL == pEventData ) ||
13655 ( NULL == pEventData->pEventData ) ||
13656 ( NULL == pEventData->pCBfnc ))
13657 {
13658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13659 "%s: Invalid parameters", __func__);
13660 WDI_ASSERT(0);
13661 return WDI_STATUS_E_FAILURE;
13662 }
13663
13664 pwdiSetTxPowerParams =
13665 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13666 wdiSetTxPowerRspCb =
13667 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13668
13669 /*-----------------------------------------------------------------------
13670 Get message buffer
13671 -----------------------------------------------------------------------*/
13672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13673 sizeof(tSetTxPwrReqParams),
13674 &pSendBuffer, &usDataOffset, &usSendSize))||
13675 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13676 )))
13677 {
13678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013679 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013680 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13681 WDI_ASSERT(0);
13682 return WDI_STATUS_E_FAILURE;
13683 }
13684
Leo Chang9a43db92013-03-25 17:39:58 -070013685 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13686 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13687 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013688
13689 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13690 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13691
13692 /*-------------------------------------------------------------------------
13693 Send Set Tx Power Request to HAL
13694 -------------------------------------------------------------------------*/
13695 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13696 wdiSetTxPowerRspCb, pEventData->pUserData,
13697 WDI_SET_TX_POWER_RESP);
13698}
Jeff Johnson295189b2012-06-20 16:38:30 -070013699
13700/**
13701 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13702 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013703
13704 @param pWDICtx: pointer to the WLAN DAL context
13705 pEventData: pointer to the event information structure
13706
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 @see
13708 @return Result of the function call
13709*/
13710WDI_Status
13711WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013712(
Jeff Johnson295189b2012-06-20 16:38:30 -070013713 WDI_ControlBlockType* pWDICtx,
13714 WDI_EventInfoType* pEventData
13715)
13716{
13717 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13718 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013719 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 wpt_uint16 usDataOffset = 0;
13721 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013722 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13724
13725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 -------------------------------------------------------------------------*/
13728 if (( NULL == pEventData ) ||
13729 ( NULL == pEventData->pEventData) ||
13730 ( NULL == pEventData->pCBfnc))
13731 {
13732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 }
13737
Jeff Johnsone7245742012-09-05 17:12:55 -070013738 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013739 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13742 /*-----------------------------------------------------------------------
13743 Get message buffer
13744 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013745 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13746 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 sizeof(halSetP2PGONOAParams),
13748 &pSendBuffer, &usDataOffset, &usSendSize))||
13749 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13750 {
13751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013752 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 }
13757
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13762 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013767 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13771
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 wpalMemoryCopy( pSendBuffer+usDataOffset,
13773 &halSetP2PGONOAParams,
13774 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013775
13776 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013778
13779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13783 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13784 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013785}/*WDI_ProcessP2PGONOAReq*/
13786
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013787#ifdef FEATURE_WLAN_TDLS
13788
13789/**
13790 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13791 allows it)
13792
13793 @param pWDICtx: pointer to the WLAN DAL context
13794 pEventData: pointer to the event information structure
13795
13796 @see
13797 @return Result of the function call
13798*/
13799WDI_Status
13800WDI_ProcessTdlsLinkEstablishReq
13801(
13802 WDI_ControlBlockType* pWDICtx,
13803 WDI_EventInfoType* pEventData
13804)
13805{
13806 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13807 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13808 wpt_uint8* pSendBuffer = NULL;
13809 wpt_uint16 usDataOffset = 0;
13810 wpt_uint16 usSendSize = 0;
13811
13812 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13814
13815 /*-------------------------------------------------------------------------
13816 Sanity check
13817 -------------------------------------------------------------------------*/
13818 if (( NULL == pEventData ) ||
13819 ( NULL == pEventData->pEventData) ||
13820 ( NULL == pEventData->pCBfnc))
13821 {
13822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13823 "%s: Invalid parameters", __func__);
13824 WDI_ASSERT(0);
13825 return WDI_STATUS_E_FAILURE;
13826 }
13827 pwdiTDLSLinkEstablishReqParams =
13828 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13829 wdiTDLSLinkEstablishReqRspCb =
13830 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13831
13832
13833 /*-----------------------------------------------------------------------
13834 Get message buffer
13835 -----------------------------------------------------------------------*/
13836 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13837 WDI_TDLS_LINK_ESTABLISH_REQ,
13838 sizeof(halSetTDLSLinkEstablishParams),
13839 &pSendBuffer, &usDataOffset, &usSendSize))||
13840 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13841 {
13842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013843 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013844 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13845 WDI_ASSERT(0);
13846 return WDI_STATUS_E_FAILURE;
13847 }
13848
13849 halSetTDLSLinkEstablishParams.staIdx =
13850 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13851 halSetTDLSLinkEstablishParams.bIsResponder =
13852 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13853 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13854 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13855 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13856 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13857 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13858 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13859 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13860 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13861 halSetTDLSLinkEstablishParams.aAck = 0;
13862 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13863 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13864 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013865 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13866 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13867
13868 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13869 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13870 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13871 halSetTDLSLinkEstablishParams.validChannelsLen =
13872 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13873
13874 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13875 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13876 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13877 halSetTDLSLinkEstablishParams.validOperClassesLen =
13878 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013879
13880 wpalMemoryCopy( pSendBuffer+usDataOffset,
13881 &halSetTDLSLinkEstablishParams,
13882 sizeof(halSetTDLSLinkEstablishParams));
13883
13884 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13885 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13886
13887 /*-------------------------------------------------------------------------
13888 Send Update Probe Resp Template Request to HAL
13889 -------------------------------------------------------------------------*/
13890 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13891 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13892 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13893 return 0;
13894}/*WDI_ProcessTdlsLinkEstablishReq*/
13895
13896
Atul Mittalc0f739f2014-07-31 13:47:47 +053013897/**
13898 @brief sends the channel switch command to f/w (called when Main FSM
13899 allows it)
13900
13901 @param pWDICtx: pointer to the WLAN DAL context
13902 pEventData: pointer to the event information structure
13903
13904 @see
13905 @return Result of the function call
13906*/
13907WDI_Status
13908WDI_ProcessTdlsChanSwitchReq
13909(
13910 WDI_ControlBlockType* pWDICtx,
13911 WDI_EventInfoType* pEventData
13912)
13913{
13914 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13915 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13916 wpt_uint8* pSendBuffer = NULL;
13917 wpt_uint16 usDataOffset = 0;
13918 wpt_uint16 usSendSize = 0;
13919 //WDI_Status wdiStatus;
13920 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13922
13923 /*-------------------------------------------------------------------------
13924 Sanity check
13925 -------------------------------------------------------------------------*/
13926 if (( NULL == pEventData ) ||
13927 ( NULL == pEventData->pEventData))
13928 {
13929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13930 "%s: Invalid parameters", __func__);
13931 WDI_ASSERT(0);
13932 return WDI_STATUS_E_FAILURE;
13933 }
13934 pwdiTDLSChanSwitchReqParams =
13935 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13936 wdiTDLSChanSwitchReqRspCb =
13937 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13938
13939 /*-----------------------------------------------------------------------
13940 Get message buffer
13941 -----------------------------------------------------------------------*/
13942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13943 WDI_TDLS_CHAN_SWITCH_REQ,
13944 sizeof(halSetTDLSChanSwitchParams),
13945 &pSendBuffer, &usDataOffset, &usSendSize))||
13946 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13947 {
13948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13949 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13950 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13951 WDI_ASSERT(0);
13952 return WDI_STATUS_E_FAILURE;
13953 }
13954
13955 halSetTDLSChanSwitchParams.staIdx =
13956 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13957 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13958 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13959 halSetTDLSChanSwitchParams.targetOperClass =
13960 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13961 halSetTDLSChanSwitchParams.targetChannel =
13962 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13963 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13964 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13965 wpalMemoryCopy( pSendBuffer+usDataOffset,
13966 &halSetTDLSChanSwitchParams,
13967 sizeof(halSetTDLSChanSwitchParams));
13968
13969 pWDICtx->wdiReqStatusCB = NULL;
13970 pWDICtx->pReqStatusUserData = NULL;
13971
13972 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13973 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13974 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13975}/*WDI_ProcessTdlsChanSwitchReq*/
13976
13977#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013978
Jeff Johnson295189b2012-06-20 16:38:30 -070013979
13980
13981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 @param None
13985
13986 @see
13987 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013988*/
13989void
13990WDI_SetPowerStateCb
13991(
13992 wpt_status status,
13993 unsigned int dxePhyAddr,
13994 void *pContext
13995)
13996{
13997 wpt_status wptStatus;
13998 WDI_ControlBlockType *pCB = NULL;
13999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014000 /*
14001 * Trigger the event to bring the Enter BMPS req function to come
14002 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014003*/
14004 if( NULL != pContext )
14005 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 }
14008 else
14009 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014010 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 pCB = &gWDICb;
14012 }
Mihir Shetea4306052014-03-25 00:02:54 +053014013
14014 if(eWLAN_PAL_STATUS_SUCCESS == status )
14015 {
14016 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14017 }
14018 else
14019 {
14020 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14021 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 pCB->dxePhyAddr = dxePhyAddr;
14023 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14024 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14025 {
14026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14027 "Failed to set an event");
14028
Jeff Johnsone7245742012-09-05 17:12:55 -070014029 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 }
14031 return;
14032}
14033
14034
14035/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014036 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014038
14039 @param pWDICtx: pointer to the WLAN DAL context
14040 pEventData: pointer to the event information structure
14041
Jeff Johnson295189b2012-06-20 16:38:30 -070014042 @see
14043 @return Result of the function call
14044*/
14045WDI_Status
14046WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014047(
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 WDI_ControlBlockType* pWDICtx,
14049 WDI_EventInfoType* pEventData
14050)
14051{
Jeff Johnson43971f52012-07-17 12:26:56 -070014052 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014053 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 wpt_uint16 usDataOffset = 0;
14056 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014057 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14059
14060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014062 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014063 if ((NULL == pEventData ) ||
14064 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14065 (NULL == (pwdiEnterImpsReqParams =
14066 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014067 {
14068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014071 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 }
14073
14074 /*-----------------------------------------------------------------------
14075 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014076 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014078 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 0,
14080 &pSendBuffer, &usDataOffset, &usSendSize))||
14081 ( usSendSize < (usDataOffset )))
14082 {
14083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014084 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 pEventData, wdiEnterImpsRspCb);
14086 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014087 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014088 }
14089
14090 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014091 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14092 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 {
14094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14095 "WDI Init failed to reset an event");
14096
Jeff Johnsone7245742012-09-05 17:12:55 -070014097 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014098 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 }
14100
14101 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014102 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14103 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014105 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014106 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014107 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014108 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014109
14110 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014111 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014113 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14114 WDI_SET_POWER_STATE_TIMEOUT);
14115 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 {
14117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14118 "WDI Init failed to wait on an event");
14119
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014121 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 }
14123
Mihir Shetea4306052014-03-25 00:02:54 +053014124 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14125 {
14126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14127 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14128
14129 goto fail;
14130 }
14131
14132 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14133 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014135 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14138 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014139
14140fail:
14141 // Release the message buffer so we don't leak
14142 wpalMemoryFree(pSendBuffer);
14143
14144failRequest:
14145 //WDA should have failure check to avoid the memory leak
14146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014147}/*WDI_ProcessEnterImpsReq*/
14148
14149/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014150 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014152
14153 @param pWDICtx: pointer to the WLAN DAL context
14154 pEventData: pointer to the event information structure
14155
Jeff Johnson295189b2012-06-20 16:38:30 -070014156 @see
14157 @return Result of the function call
14158*/
14159WDI_Status
14160WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014161(
Jeff Johnson295189b2012-06-20 16:38:30 -070014162 WDI_ControlBlockType* pWDICtx,
14163 WDI_EventInfoType* pEventData
14164)
14165{
14166 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014167 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014168 wpt_uint16 usDataOffset = 0;
14169 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014170 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14172
14173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 -------------------------------------------------------------------------*/
14176 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014177 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14178 (NULL == (pwdiExitImpsReqParams =
14179 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 {
14181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 }
14186
14187 /*-----------------------------------------------------------------------
14188 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014189 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 0,
14193 &pSendBuffer, &usDataOffset, &usSendSize))||
14194 ( usSendSize < (usDataOffset )))
14195 {
14196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014197 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 pEventData, wdiExitImpsRspCb);
14199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014202 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14203 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014205 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014207 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14208 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014209}/*WDI_ProcessExitImpsReq*/
14210
14211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014212 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014213 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014214
14215 @param pWDICtx: pointer to the WLAN DAL context
14216 pEventData: pointer to the event information structure
14217
Jeff Johnson295189b2012-06-20 16:38:30 -070014218 @see
14219 @return Result of the function call
14220*/
14221WDI_Status
14222WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014223(
Jeff Johnson295189b2012-06-20 16:38:30 -070014224 WDI_ControlBlockType* pWDICtx,
14225 WDI_EventInfoType* pEventData
14226)
14227{
14228 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14229 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014230 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014231 wpt_uint16 usDataOffset = 0;
14232 wpt_uint16 usSendSize = 0;
14233 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014234 wpt_status wptStatus;
14235
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14237
14238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014240 -------------------------------------------------------------------------*/
14241 if (( NULL == pEventData ) ||
14242 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14243 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14244 {
14245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014247 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014248 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 }
14250
14251 /*-----------------------------------------------------------------------
14252 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 sizeof(enterBmpsReq),
14257 &pSendBuffer, &usDataOffset, &usSendSize))||
14258 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14259 {
14260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014261 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14263 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014264 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014265 }
14266
14267 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014268 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14269 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014270 {
14271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14272 "WDI Init failed to reset an event");
14273
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014275 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014276 }
14277
14278 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014279 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14280 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14281 {
14282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014283 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014284 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014285 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014286 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014287
14288/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014289 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014291 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14292 WDI_SET_POWER_STATE_TIMEOUT);
14293 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 {
14295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14296 "WDI Init failed to wait on an event");
14297
Jeff Johnsone7245742012-09-05 17:12:55 -070014298 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014299 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 }
14301
14302 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14303
14304 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14305 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14306 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14307 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14308
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014309 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14311 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14312 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14313
14314 wpalMemoryCopy( pSendBuffer+usDataOffset,
14315 &enterBmpsReq,
14316 sizeof(enterBmpsReq));
14317
14318 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014319 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014320
14321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014323 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14325 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014326
14327fail:
14328 // Release the message buffer so we don't leak
14329 wpalMemoryFree(pSendBuffer);
14330
14331failRequest:
14332 //WDA should have failure check to avoid the memory leak
14333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014334}/*WDI_ProcessEnterBmpsReq*/
14335
14336/**
14337 @brief Process Exit BMPS Request function (called when Main FSM
14338 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014339
14340 @param pWDICtx: pointer to the WLAN DAL context
14341 pEventData: pointer to the event information structure
14342
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 @see
14344 @return Result of the function call
14345*/
14346WDI_Status
14347WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014348(
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 WDI_ControlBlockType* pWDICtx,
14350 WDI_EventInfoType* pEventData
14351)
14352{
14353 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14354 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 wpt_uint16 usDataOffset = 0;
14357 wpt_uint16 usSendSize = 0;
14358 tHalExitBmpsReqParams exitBmpsReq;
14359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14360
14361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 -------------------------------------------------------------------------*/
14364 if (( NULL == pEventData ) ||
14365 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14366 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14367 {
14368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 }
14373
14374 /*-----------------------------------------------------------------------
14375 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 sizeof(exitBmpsReq),
14380 &pSendBuffer, &usDataOffset, &usSendSize))||
14381 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14382 {
14383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014384 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 }
14389 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14390
Jeff Johnsone7245742012-09-05 17:12:55 -070014391 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14392
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 wpalMemoryCopy( pSendBuffer+usDataOffset,
14394 &exitBmpsReq,
14395 sizeof(exitBmpsReq));
14396
14397 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014398 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014399
14400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14404 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014405}/*WDI_ProcessExitBmpsReq*/
14406
14407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014408 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014409 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014410
14411 @param pWDICtx: pointer to the WLAN DAL context
14412 pEventData: pointer to the event information structure
14413
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 @see
14415 @return Result of the function call
14416*/
14417WDI_Status
14418WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014419(
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 WDI_ControlBlockType* pWDICtx,
14421 WDI_EventInfoType* pEventData
14422)
14423{
14424 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14425 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014426 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 wpt_uint16 usDataOffset = 0;
14428 wpt_uint16 usSendSize = 0;
14429 tUapsdReqParams enterUapsdReq;
14430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14431
14432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014433 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 -------------------------------------------------------------------------*/
14435 if (( NULL == pEventData ) ||
14436 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14437 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14438 {
14439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 }
14444
14445 /*-----------------------------------------------------------------------
14446 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014449 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014450 sizeof(enterUapsdReq),
14451 &pSendBuffer, &usDataOffset, &usSendSize))||
14452 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14453 {
14454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014455 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 }
14460
14461 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14462 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14463 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14464 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14465 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14466 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14467 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14468 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014469 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014470
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 wpalMemoryCopy( pSendBuffer+usDataOffset,
14472 &enterUapsdReq,
14473 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014474
14475 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014477
14478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014479 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14482 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014483}/*WDI_ProcessEnterUapsdReq*/
14484
14485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014488
14489 @param pWDICtx: pointer to the WLAN DAL context
14490 pEventData: pointer to the event information structure
14491
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 @see
14493 @return Result of the function call
14494*/
14495WDI_Status
14496WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014497(
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 WDI_ControlBlockType* pWDICtx,
14499 WDI_EventInfoType* pEventData
14500)
14501{
14502 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014503 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 wpt_uint16 usDataOffset = 0;
14505 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014506 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14507 wpt_uint8 bssIdx = 0;
14508
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14510
14511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 -------------------------------------------------------------------------*/
14514 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014515 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014516 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14517 {
14518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 }
14523
14524 /*-----------------------------------------------------------------------
14525 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014526 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014527 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014528 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014529 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014531 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 {
14533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014534 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 pEventData, wdiExitUapsdRspCb);
14536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014538 }
14539
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014540 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14541
14542 wpalMemoryCopy( pSendBuffer+usDataOffset,
14543 &bssIdx,
14544 sizeof(wpt_uint8));
14545
14546 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14547 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14548
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014552 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14553 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014554}/*WDI_ProcessExitUapsdReq*/
14555
14556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014559
14560 @param pWDICtx: pointer to the WLAN DAL context
14561 pEventData: pointer to the event information structure
14562
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 @see
14564 @return Result of the function call
14565*/
14566WDI_Status
14567WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014568(
Jeff Johnson295189b2012-06-20 16:38:30 -070014569 WDI_ControlBlockType* pWDICtx,
14570 WDI_EventInfoType* pEventData
14571)
14572{
14573 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14574 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 wpt_uint16 usDataOffset = 0;
14577 wpt_uint16 usSendSize = 0;
14578 tUapsdInfo uapsdAcParamsReq;
14579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14580
14581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 -------------------------------------------------------------------------*/
14584 if (( NULL == pEventData ) ||
14585 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14586 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14587 {
14588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 }
14593
14594 /*-----------------------------------------------------------------------
14595 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 sizeof(uapsdAcParamsReq),
14600 &pSendBuffer, &usDataOffset, &usSendSize))||
14601 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14602 {
14603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014604 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014605 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 }
14609
14610 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14611 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14612 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14613 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14614 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14615 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14616
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 wpalMemoryCopy( pSendBuffer+usDataOffset,
14618 &uapsdAcParamsReq,
14619 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014620
14621 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014622 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014623
14624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014625 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014626 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14628 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014629}/*WDI_ProcessSetUapsdAcParamsReq*/
14630
14631/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014633 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014634
14635 @param pWDICtx: pointer to the WLAN DAL context
14636 pEventData: pointer to the event information structure
14637
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 @see
14639 @return Result of the function call
14640*/
14641WDI_Status
14642WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014643(
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 WDI_ControlBlockType* pWDICtx,
14645 WDI_EventInfoType* pEventData
14646)
14647{
14648 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14649 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014650 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 wpt_uint16 usDataOffset = 0;
14652 wpt_uint16 usSendSize = 0;
14653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14654
14655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014656 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 -------------------------------------------------------------------------*/
14658 if (( NULL == pEventData ) ||
14659 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14660 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14661 {
14662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 }
14667
14668 /*-----------------------------------------------------------------------
14669 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14674 &pSendBuffer, &usDataOffset, &usSendSize))||
14675 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14676 {
14677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014678 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14680 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 }
14683
Jeff Johnsone7245742012-09-05 17:12:55 -070014684 wpalMemoryCopy( pSendBuffer+usDataOffset,
14685 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14686 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014687
14688 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014690
14691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14695 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014696}/*WDI_ProcessUpdateUapsdParamsReq*/
14697
14698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014699 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014701
14702 @param pWDICtx: pointer to the WLAN DAL context
14703 pEventData: pointer to the event information structure
14704
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 @see
14706 @return Result of the function call
14707*/
14708WDI_Status
14709WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014710(
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 WDI_ControlBlockType* pWDICtx,
14712 WDI_EventInfoType* pEventData
14713)
14714{
14715 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14716 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 wpt_uint16 usDataOffset = 0;
14719 wpt_uint16 usSendSize = 0;
14720 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14721
14722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14723
14724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 -------------------------------------------------------------------------*/
14727 if (( NULL == pEventData ) ||
14728 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14729 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14730 {
14731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 }
14736
14737 /*-----------------------------------------------------------------------
14738 Get message buffer
14739 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014741 sizeof(halRxpFilterParams),
14742 &pSendBuffer, &usDataOffset, &usSendSize))||
14743 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14744 {
14745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014746 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014750 }
14751
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14756
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 wpalMemoryCopy( pSendBuffer+usDataOffset,
14758 &halRxpFilterParams,
14759 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014760
14761 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014763
14764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14768 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014769}/*WDI_ProcessConfigureRxpFilterReq*/
14770
14771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014774
14775 @param pWDICtx: pointer to the WLAN DAL context
14776 pEventData: pointer to the event information structure
14777
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 @see
14779 @return Result of the function call
14780*/
14781WDI_Status
14782WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014783(
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 WDI_ControlBlockType* pWDICtx,
14785 WDI_EventInfoType* pEventData
14786)
14787{
14788 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14789 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014790 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 wpt_uint16 usDataOffset = 0;
14792 wpt_uint16 usSendSize = 0;
14793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14794
14795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 -------------------------------------------------------------------------*/
14798 if (( NULL == pEventData ) ||
14799 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14800 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14801 {
14802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014806 }
14807
14808 /*-----------------------------------------------------------------------
14809 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014810 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014813 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14814 &pSendBuffer, &usDataOffset, &usSendSize))||
14815 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14816 {
14817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014818 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014822 }
14823
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 wpalMemoryCopy( pSendBuffer+usDataOffset,
14825 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14826 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14827 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14828 &pwdiBeaconFilterParams->aFilters[0],
14829 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014830
14831 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014833
14834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014835 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14838 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014839}/*WDI_ProcessSetBeaconFilterReq*/
14840
14841/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014843 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014844
14845 @param pWDICtx: pointer to the WLAN DAL context
14846 pEventData: pointer to the event information structure
14847
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 @see
14849 @return Result of the function call
14850*/
14851WDI_Status
14852WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014853(
Jeff Johnson295189b2012-06-20 16:38:30 -070014854 WDI_ControlBlockType* pWDICtx,
14855 WDI_EventInfoType* pEventData
14856)
14857{
14858 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14859 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014861 wpt_uint16 usDataOffset = 0;
14862 wpt_uint16 usSendSize = 0;
14863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14864
14865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 -------------------------------------------------------------------------*/
14868 if (( NULL == pEventData ) ||
14869 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14870 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14871 {
14872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 }
14877
14878 /*-----------------------------------------------------------------------
14879 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14884 &pSendBuffer, &usDataOffset, &usSendSize))||
14885 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14886 {
14887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014888 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 }
14893
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 wpalMemoryCopy( pSendBuffer+usDataOffset,
14895 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14896 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014897
14898 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014900
14901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14905 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014906}
14907
14908/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014911
14912 @param pWDICtx: pointer to the WLAN DAL context
14913 pEventData: pointer to the event information structure
14914
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 @see
14916 @return Result of the function call
14917*/
14918WDI_Status
14919WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014920(
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 WDI_ControlBlockType* pWDICtx,
14922 WDI_EventInfoType* pEventData
14923)
14924{
14925 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14926 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014927 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014928 wpt_uint16 usDataOffset = 0;
14929 wpt_uint16 usSendSize = 0;
14930 tHalRSSIThresholds rssiThresholdsReq;
14931 WDI_Status ret_status = 0;
14932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14933
14934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 -------------------------------------------------------------------------*/
14937 if (( NULL == pEventData ) ||
14938 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14939 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14940 {
14941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 }
14946
14947 /*-----------------------------------------------------------------------
14948 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014949 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014951 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 sizeof(rssiThresholdsReq),
14953 &pSendBuffer, &usDataOffset, &usSendSize))||
14954 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14955 {
14956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014957 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 }
14962
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014965 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014973 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014977 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014978 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014981 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14983
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 wpalMemoryCopy( pSendBuffer+usDataOffset,
14985 &rssiThresholdsReq,
14986 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014987
14988 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014990
14991 /*-------------------------------------------------------------------------
14992 Send Set threshold req to HAL
14993 -------------------------------------------------------------------------*/
14994 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14995 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14996 {
14997 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14998 // req. Then as a result of processing the threshold cross ind, we trigger
14999 // a Set threshold req, then we need to indicate to WDI that it needs to
15000 // go to busy state as a result of the indication as we sent a req in the
15001 // same WDI context.
15002 // Hence expected state transition is to busy.
15003 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15004 }
15005
15006 return ret_status;
15007}
15008
15009/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015010 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015012
15013 @param pWDICtx: pointer to the WLAN DAL context
15014 pEventData: pointer to the event information structure
15015
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 @see
15017 @return Result of the function call
15018*/
15019WDI_Status
15020WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015021(
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 WDI_ControlBlockType* pWDICtx,
15023 WDI_EventInfoType* pEventData
15024)
15025{
15026 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15027 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015028 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 wpt_uint16 usDataOffset = 0;
15030 wpt_uint16 usSendSize = 0;
15031 tHalHostOffloadReq hostOffloadParams;
15032 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015033 wpt_uint8 ucCurrentBSSSesIdx = 0;
15034 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015035
15036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15037
15038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 -------------------------------------------------------------------------*/
15041 if (( NULL == pEventData ) ||
15042 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15043 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15044 {
15045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015046 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015047 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015048 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 }
15050
15051 /*-----------------------------------------------------------------------
15052 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015053 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015055 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15057 &pSendBuffer, &usDataOffset, &usSendSize))||
15058 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15059 {
15060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015061 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15063 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015064 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 }
15066
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015067 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15068 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15069 &pBSSSes);
15070 if ( NULL == pBSSSes )
15071 {
c_hpothu86feba52014-10-28 15:51:18 +053015072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015073 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15074 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015075 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015076 }
15077
Jeff Johnson295189b2012-06-20 16:38:30 -070015078 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15079 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015080
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15082 {
15083 // ARP Offload
15084 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15085 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15086 4);
15087 }
15088 else
15089 {
15090 // NS Offload
15091 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15092 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15093 16);
15094
15095#ifdef WLAN_NS_OFFLOAD
15096 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15097 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15098 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15099 16);
15100 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15101 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15102 16);
15103 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15104 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15105 16);
15106 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15107 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15108 16);
15109 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15110 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15111 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015112 nsOffloadParams.srcIPv6AddrValid =
15113 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15114
15115 nsOffloadParams.targetIPv6Addr1Valid =
15116 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15117
15118 nsOffloadParams.targetIPv6Addr2Valid =
15119 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15120
15121 nsOffloadParams.slotIndex =
15122 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015123
Jeff Johnson295189b2012-06-20 16:38:30 -070015124#endif // WLAN_NS_OFFLOAD
15125 }
15126
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015127 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15128
Jeff Johnson295189b2012-06-20 16:38:30 -070015129 // copy hostOffloadParams into pSendBuffer
15130 wpalMemoryCopy( pSendBuffer+usDataOffset,
15131 &hostOffloadParams,
15132 sizeof(hostOffloadParams));
15133
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015134 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015135 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015136 // copy nsOffloadParams into pSendBuffer
15137 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 &nsOffloadParams,
15139 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015140 }
15141 else
15142 {
15143#ifdef WLAN_NS_OFFLOAD
15144 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15145 {
15146 // copy nsOffloadParams into pSendBuffer
15147 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15148 &nsOffloadParams,
15149 sizeof(nsOffloadParams));
15150 }
15151#endif
15152 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015153
15154 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015155 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015156
15157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015158 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015159 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015160 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15161 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015162
15163fail:
15164 // Release the message buffer so we don't leak
15165 wpalMemoryFree(pSendBuffer);
15166
15167failRequest:
15168 //WDA should have failure check to avoid the memory leak
15169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015170}/*WDI_ProcessHostOffloadReq*/
15171
15172/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015173 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015175
15176 @param pWDICtx: pointer to the WLAN DAL context
15177 pEventData: pointer to the event information structure
15178
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 @see
15180 @return Result of the function call
15181*/
15182WDI_Status
15183WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015184(
Jeff Johnson295189b2012-06-20 16:38:30 -070015185 WDI_ControlBlockType* pWDICtx,
15186 WDI_EventInfoType* pEventData
15187)
15188{
15189 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15190 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015191 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015192 wpt_uint16 usDataOffset = 0;
15193 wpt_uint16 usSendSize = 0;
15194 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015195 wpt_uint8 ucCurrentBSSSesIdx = 0;
15196 WDI_BSSSessionType* pBSSSes = NULL;
15197
Jeff Johnson295189b2012-06-20 16:38:30 -070015198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15199
15200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015202 -------------------------------------------------------------------------*/
15203 if (( NULL == pEventData ) ||
15204 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15205 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15206 {
15207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15208 "Invalid parameters in Keep Alive req");
15209 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015210 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 }
15212
15213 /*-----------------------------------------------------------------------
15214 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 sizeof(keepAliveReq),
15219 &pSendBuffer, &usDataOffset, &usSendSize))||
15220 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15221 {
15222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015223 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15225 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015226 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 }
15228
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015229 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15230 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15231 &pBSSSes);
15232 if ( NULL == pBSSSes )
15233 {
15234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015235 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015236 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015237 }
15238
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15240 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15241
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015242 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015243
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15245 {
15246 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15247 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15248 HAL_IPV4_ADDR_LEN);
15249 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15250 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 wpalMemoryCopy(keepAliveReq.destMacAddr,
15253 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15254 HAL_MAC_ADDR_LEN);
15255 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015256
15257 wpalMemoryCopy( pSendBuffer+usDataOffset,
15258 &keepAliveReq,
15259 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015260
15261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015262 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015263
15264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015265 "Process keep alive req time period %d",
15266 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015267
15268 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015270
15271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15272 "Sending keep alive req to HAL");
15273
15274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015275 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15278 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015279
15280fail:
15281 // Release the message buffer so we don't leak
15282 wpalMemoryFree(pSendBuffer);
15283
15284failRequest:
15285 //WDA should have failure check to avoid the memory leak
15286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015287}/*WDI_ProcessKeepAliveReq*/
15288
15289
15290/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015293
15294 @param pWDICtx: pointer to the WLAN DAL context
15295 pEventData: pointer to the event information structure
15296
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 @see
15298 @return Result of the function call
15299*/
15300WDI_Status
15301WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015302(
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 WDI_ControlBlockType* pWDICtx,
15304 WDI_EventInfoType* pEventData
15305)
15306{
15307 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15308 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015309 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015310 wpt_uint16 usDataOffset = 0;
15311 wpt_uint16 usSendSize = 0;
15312 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015313 wpt_uint8 ucCurrentBSSSesIdx = 0;
15314 WDI_BSSSessionType* pBSSSes = NULL;
15315
Jeff Johnson295189b2012-06-20 16:38:30 -070015316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15317
15318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015319 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015320 -------------------------------------------------------------------------*/
15321 if (( NULL == pEventData ) ||
15322 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15323 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15324 {
15325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015326 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015327 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015328 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 }
15330
15331 /*-----------------------------------------------------------------------
15332 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015333 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 sizeof(wowlAddBcPtrnReq),
15337 &pSendBuffer, &usDataOffset, &usSendSize))||
15338 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15339 {
15340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015341 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015342 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15343 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015344 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 }
15346
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015347 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15348 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15349 &pBSSSes);
15350 if ( NULL == pBSSSes )
15351 {
15352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015353 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015354 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015355 }
15356
Jeff Johnsone7245742012-09-05 17:12:55 -070015357 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015359 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015361 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015362 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015363 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15365
15366 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15367 {
15368 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15369 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15370 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15371 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15372 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15373 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15374 }
15375 else
15376 {
15377 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15378 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15379 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15380 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15381 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15382 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15383
15384 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15385 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15386 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15387 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15388 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15389 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15390 }
15391
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015392 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15393
Jeff Johnson295189b2012-06-20 16:38:30 -070015394 wpalMemoryCopy( pSendBuffer+usDataOffset,
15395 &wowlAddBcPtrnReq,
15396 sizeof(wowlAddBcPtrnReq));
15397
15398 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015399 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015400
15401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015402 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015404 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15405 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015406fail:
15407 // Release the message buffer so we don't leak
15408 wpalMemoryFree(pSendBuffer);
15409
15410failRequest:
15411 //WDA should have failure check to avoid the memory leak
15412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015413}/*WDI_ProcessWowlAddBcPtrnReq*/
15414
15415/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015416 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015417 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015418
15419 @param pWDICtx: pointer to the WLAN DAL context
15420 pEventData: pointer to the event information structure
15421
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 @see
15423 @return Result of the function call
15424*/
15425WDI_Status
15426WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015427(
Jeff Johnson295189b2012-06-20 16:38:30 -070015428 WDI_ControlBlockType* pWDICtx,
15429 WDI_EventInfoType* pEventData
15430)
15431{
15432 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15433 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015434 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015435 wpt_uint16 usDataOffset = 0;
15436 wpt_uint16 usSendSize = 0;
15437 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015438 wpt_uint8 ucCurrentBSSSesIdx = 0;
15439 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15441
15442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015444 -------------------------------------------------------------------------*/
15445 if (( NULL == pEventData ) ||
15446 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15447 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15448 {
15449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015452 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015453 }
15454
15455 /*-----------------------------------------------------------------------
15456 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 sizeof(wowlDelBcPtrnReq),
15461 &pSendBuffer, &usDataOffset, &usSendSize))||
15462 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15463 {
15464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015465 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15467 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015468 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 }
15470
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015471 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15472 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15473 &pBSSSes);
15474 if ( NULL == pBSSSes )
15475 {
15476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015477 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015478 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015479 }
15480
Jeff Johnsone7245742012-09-05 17:12:55 -070015481 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015482 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015483
15484 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15485
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 wpalMemoryCopy( pSendBuffer+usDataOffset,
15487 &wowlDelBcPtrnReq,
15488 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015489
15490 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015491 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015492
15493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015494 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15497 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015498
15499fail:
15500 // Release the message buffer so we don't leak
15501 wpalMemoryFree(pSendBuffer);
15502
15503failRequest:
15504 //WDA should have failure check to avoid the memory leak
15505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015506}/*WDI_ProcessWowlDelBcPtrnReq*/
15507
15508/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015511
15512 @param pWDICtx: pointer to the WLAN DAL context
15513 pEventData: pointer to the event information structure
15514
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 @see
15516 @return Result of the function call
15517*/
15518WDI_Status
15519WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015520(
Jeff Johnson295189b2012-06-20 16:38:30 -070015521 WDI_ControlBlockType* pWDICtx,
15522 WDI_EventInfoType* pEventData
15523)
15524{
15525 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15526 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 wpt_uint16 usDataOffset = 0;
15529 wpt_uint16 usSendSize = 0;
15530 tHalWowlEnterParams wowlEnterReq;
15531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15532
15533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015535 -------------------------------------------------------------------------*/
15536 if (( NULL == pEventData ) ||
15537 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15538 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15539 {
15540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 }
15545
15546 /*-----------------------------------------------------------------------
15547 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015548 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015550 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 sizeof(wowlEnterReq),
15552 &pSendBuffer, &usDataOffset, &usSendSize))||
15553 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15554 {
15555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015556 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015560 }
15561
Kumar Anandaca924e2013-07-22 14:35:34 -070015562 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15563
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015568 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015570 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015572 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015573 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015574 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015575 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015576 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015578 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015579 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15580
15581#ifdef WLAN_WAKEUP_EVENTS
15582 wowlEnterReq.ucWoWEAPIDRequestEnable =
15583 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15584
15585 wowlEnterReq.ucWoWEAPOL4WayEnable =
15586 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15587
15588 wowlEnterReq.ucWowNetScanOffloadMatch =
15589 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15590
15591 wowlEnterReq.ucWowGTKRekeyError =
15592 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15593
15594 wowlEnterReq.ucWoWBSSConnLoss =
15595 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15596#endif // WLAN_WAKEUP_EVENTS
15597
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015598 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15599
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15601 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15602 sizeof(tSirMacAddr));
15603
Jeff Johnsone7245742012-09-05 17:12:55 -070015604 wpalMemoryCopy( pSendBuffer+usDataOffset,
15605 &wowlEnterReq,
15606 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015607
15608 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015610
15611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15615 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015616}/*WDI_ProcessWowlEnterReq*/
15617
15618/**
15619 @brief Process Wowl exit Request function (called when Main FSM
15620 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015621
15622 @param pWDICtx: pointer to the WLAN DAL context
15623 pEventData: pointer to the event information structure
15624
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 @see
15626 @return Result of the function call
15627*/
15628WDI_Status
15629WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015630(
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 WDI_ControlBlockType* pWDICtx,
15632 WDI_EventInfoType* pEventData
15633)
15634{
15635 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015636 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015637 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 wpt_uint16 usDataOffset = 0;
15639 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015640 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15642
15643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015645 -------------------------------------------------------------------------*/
15646 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015647 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15649 {
15650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 }
15655
15656 /*-----------------------------------------------------------------------
15657 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015658 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015661 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015663 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 {
15665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015666 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 pEventData, wdiWowlExitCb);
15668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 }
15671
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015672 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15673
15674 wpalMemoryCopy( pSendBuffer+usDataOffset,
15675 &wowlExitparams,
15676 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015680 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15681 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015682}/*WDI_ProcessWowlExitReq*/
15683
15684/**
15685 @brief Process Configure Apps Cpu Wakeup State Request function
15686 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015687
15688 @param pWDICtx: pointer to the WLAN DAL context
15689 pEventData: pointer to the event information structure
15690
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 @see
15692 @return Result of the function call
15693*/
15694WDI_Status
15695WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015696(
Jeff Johnson295189b2012-06-20 16:38:30 -070015697 WDI_ControlBlockType* pWDICtx,
15698 WDI_EventInfoType* pEventData
15699)
15700{
15701 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15702 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 wpt_uint16 usDataOffset = 0;
15705 wpt_uint16 usSendSize = 0;
15706 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15708
15709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 -------------------------------------------------------------------------*/
15712 if (( NULL == pEventData ) ||
15713 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15714 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15715 {
15716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015720 }
15721
15722 /*-----------------------------------------------------------------------
15723 Get message buffer
15724 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015726 sizeof(halCfgAppsCpuWakeupStateReqParams),
15727 &pSendBuffer, &usDataOffset, &usSendSize))||
15728 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15729 {
15730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015731 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 }
15736
Jeff Johnsone7245742012-09-05 17:12:55 -070015737 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15739
Jeff Johnsone7245742012-09-05 17:12:55 -070015740 wpalMemoryCopy( pSendBuffer+usDataOffset,
15741 &halCfgAppsCpuWakeupStateReqParams,
15742 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015743
15744 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015746
15747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015749 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015750 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15751 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15752 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015753}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15754
15755#ifdef WLAN_FEATURE_VOWIFI_11R
15756/**
15757 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15758 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015759
15760 @param pWDICtx: pointer to the WLAN DAL context
15761 pEventData: pointer to the event information structure
15762
Jeff Johnson295189b2012-06-20 16:38:30 -070015763 @see
15764 @return Result of the function call
15765*/
15766WDI_Status
15767WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015768(
Jeff Johnson295189b2012-06-20 16:38:30 -070015769 WDI_ControlBlockType* pWDICtx,
15770 WDI_EventInfoType* pEventData
15771)
15772{
15773 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15774 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 wpt_uint16 usDataOffset = 0;
15779 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015780 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015781 wpt_macAddr macBSSID;
15782 tAggrAddTsReq halAggrAddTsReq;
15783 int i;
15784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15785
15786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 -------------------------------------------------------------------------*/
15789 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15790 ( NULL == pEventData->pCBfnc ))
15791 {
15792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 }
15797 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15798 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15799 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15800 /*-------------------------------------------------------------------------
15801 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015802 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015803 -------------------------------------------------------------------------*/
15804 wpalMutexAcquire(&pWDICtx->wptMutex);
15805
15806 /*------------------------------------------------------------------------
15807 Find the BSS for which the request is made and identify WDI session
15808 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015809 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15810 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 &macBSSID))
15812 {
15813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015814 "This station does not exist in the WDI Station Table %d",
15815 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015818 }
15819
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15821 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15824 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15825 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015826
15827 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015828 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015830
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 /*------------------------------------------------------------------------
15832 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 ------------------------------------------------------------------------*/
15835 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15836 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15838 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15839 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015840
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 }
15845
15846 wpalMutexRelease(&pWDICtx->wptMutex);
15847 /*-----------------------------------------------------------------------
15848 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015850 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015851 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 sizeof(tAggrAddTsParams),
15853 &pSendBuffer, &usDataOffset, &usSendSize))||
15854 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15855 {
15856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015857 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015858 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 }
15862
Jeff Johnsone7245742012-09-05 17:12:55 -070015863 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015864 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15867
15868 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15869 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015873 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015874 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015875 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15876 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15879 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15882 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15885 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015886 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15888 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15891 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015892 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15894 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015895 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15897 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015900 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015902
15903
15904 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015905 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015906 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015907 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015908 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015910 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015912 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015914 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015916 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015918 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015919 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015920 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015922 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015923 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015924 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015928 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015929 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015932 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15934 }
15935
Jeff Johnsone7245742012-09-05 17:12:55 -070015936 wpalMemoryCopy( pSendBuffer+usDataOffset,
15937 &halAggrAddTsReq,
15938 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015939
15940 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015942
15943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015944 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015945 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015949}/*WDI_ProcessAggrAddTSpecReq*/
15950#endif /* WLAN_FEATURE_VOWIFI_11R */
15951
15952/**
15953 @brief Process Shutdown Request function (called when Main FSM
15954 allows it)
15955
15956 @param pWDICtx: pointer to the WLAN DAL context
15957 pEventData: pointer to the event information structure
15958
15959 @see
15960 @return Result of the function call
15961*/
15962WDI_Status
15963WDI_ProcessShutdownReq
15964(
15965 WDI_ControlBlockType* pWDICtx,
15966 WDI_EventInfoType* pEventData
15967 )
15968{
15969 wpt_status wptStatus;
15970
15971
15972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15973
15974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 -------------------------------------------------------------------------*/
15977 if ( NULL == pEventData )
15978 {
15979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015981 WDI_ASSERT(0);
15982 return WDI_STATUS_E_FAILURE;
15983 }
15984
15985 wpalMutexAcquire(&pWDICtx->wptMutex);
15986
15987
15988 gWDIInitialized = eWLAN_PAL_FALSE;
15989 /*! TO DO: stop the data services */
15990 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15991 {
15992 /*Stop the STA Table !UT- check this logic again
15993 It is safer to do it here than on the response - because a stop is imminent*/
15994 WDI_STATableStop(pWDICtx);
15995
15996 /* Stop Transport Driver, DXE */
15997 WDTS_Stop(pWDICtx);
15998 }
15999
16000 /*Clear all pending request*/
16001 WDI_ClearPendingRequests(pWDICtx);
16002 /* Close Data transport*/
16003 /* FTM mode does not open Data Path */
16004 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16005 {
16006 WDTS_Close(pWDICtx);
16007 }
16008 /*Close the STA Table !UT- check this logic again*/
16009 WDI_STATableClose(pWDICtx);
16010 /*close the PAL */
16011 wptStatus = wpalClose(pWDICtx->pPALContext);
16012 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16013 {
16014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16015 "Failed to wpal Close %d", wptStatus);
16016 WDI_ASSERT(0);
16017 }
16018
16019 /*Transition back to init state*/
16020 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16021
16022 wpalMutexRelease(&pWDICtx->wptMutex);
16023
16024 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016025 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016026
16027
Jeff Johnsone7245742012-09-05 17:12:55 -070016028 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016029}/*WDI_ProcessShutdownReq*/
16030
16031/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016033========================================================================*/
16034
16035/**
16036 @brief Process Start Response function (called when a response
16037 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016038
16039 @param pWDICtx: pointer to the WLAN DAL context
16040 pEventData: pointer to the event information structure
16041
Jeff Johnson295189b2012-06-20 16:38:30 -070016042 @see
16043 @return Result of the function call
16044*/
16045WDI_Status
16046WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016047(
Jeff Johnson295189b2012-06-20 16:38:30 -070016048 WDI_ControlBlockType* pWDICtx,
16049 WDI_EventInfoType* pEventData
16050)
16051{
16052 WDI_StartRspParamsType wdiRspParams;
16053 WDI_StartRspCb wdiStartRspCb = NULL;
16054
16055 tHalMacStartRspParams* startRspParams;
16056
16057#ifndef HAL_SELF_STA_PER_BSS
16058 WDI_AddStaParams wdiAddSTAParam = {0};
16059#endif
16060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16061
Jeff Johnsone7245742012-09-05 17:12:55 -070016062 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016064 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 -------------------------------------------------------------------------*/
16066 if (( NULL == pEventData ) ||
16067 ( NULL == pEventData->pEventData) ||
16068 ( NULL == wdiStartRspCb ))
16069 {
16070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016071 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 }
16075
16076 /*-------------------------------------------------------------------------
16077 Extract response and send it to UMAC
16078 -------------------------------------------------------------------------*/
16079 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16080 {
16081 // not enough data was received
16082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016083 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016084 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 }
16088
16089 /*-------------------------------------------------------------------------
16090 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016091 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016092 -------------------------------------------------------------------------*/
16093 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16094
16095 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16096 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16097 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16098 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16099 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16100 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16101 wdiRspParams.wlanReportedVersion.major =
16102 startRspParams->wcnssWlanVersion.major;
16103 wdiRspParams.wlanReportedVersion.minor =
16104 startRspParams->wcnssWlanVersion.minor;
16105 wdiRspParams.wlanReportedVersion.version =
16106 startRspParams->wcnssWlanVersion.version;
16107 wdiRspParams.wlanReportedVersion.revision =
16108 startRspParams->wcnssWlanVersion.revision;
16109 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16110 startRspParams->wcnssCrmVersionString,
16111 sizeof(wdiRspParams.wcnssSoftwareVersion));
16112 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16113 startRspParams->wcnssWlanVersionString,
16114 sizeof(wdiRspParams.wcnssHardwareVersion));
16115 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16116
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016117 /*Save the HAL Version*/
16118 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16119
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 wpalMutexAcquire(&pWDICtx->wptMutex);
16121 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16122 {
16123 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16124
16125 /*Cache the start response for further use*/
16126 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016127 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 sizeof(pWDICtx->wdiCachedStartRspParams));
16129
16130 }
16131 else
16132 {
16133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16134 "Failed to start device with status %s(%d)",
16135 WDI_getHALStatusMsgString(startRspParams->status),
16136 startRspParams->status);
16137
16138 /*Set the expected state transition to stopped - because the start has
16139 failed*/
16140 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16141
16142 wpalMutexRelease(&pWDICtx->wptMutex);
16143
16144 /*Notify UMAC*/
16145 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016146
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016148 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016149
16150 /*Although the response is an error - it was processed by our function
16151 so as far as the caller is concerned this is a succesful reponse processing*/
16152 return WDI_STATUS_SUCCESS;
16153 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016154
Jeff Johnson295189b2012-06-20 16:38:30 -070016155 wpalMutexRelease(&pWDICtx->wptMutex);
16156
16157 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16158 {
16159 /* FTM mode does not need to execute below */
16160 /* Notify UMAC */
16161 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16162 return WDI_STATUS_SUCCESS;
16163 }
16164
16165 /* START the Data transport */
16166 WDTS_startTransport(pWDICtx);
16167
16168 /*Start the STA Table !- check this logic again*/
16169 WDI_STATableStart(pWDICtx);
16170
16171#ifndef HAL_SELF_STA_PER_BSS
16172 /* Store the Self STA Index */
16173 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16174
16175 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16176 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16177 WDI_MAC_ADDR_LEN);
16178
16179 /* At this point add the self-STA */
16180
16181 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16182 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16183 /*! TO DO: wdiAddSTAParam.dpuSig */
16184 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16185 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16186 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16187
16188 //all DPU indices are the same for self STA
16189 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16190 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016191 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016192 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16193 WDI_MAC_ADDR_LEN);
16194 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16195 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16196
16197 /* Note: Since we don't get an explicit config STA request for self STA, we
16198 add the self STA upon receiving the Start response message. But the
16199 self STA entry in the table is deleted when WDI gets an explicit delete STA
16200 request */
16201 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16202#endif
16203
16204 /*Notify UMAC*/
16205 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16206
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016208}/*WDI_ProcessStartRsp*/
16209
16210
16211/**
16212 @brief Process Stop Response function (called when a response
16213 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016214
16215 @param pWDICtx: pointer to the WLAN DAL context
16216 pEventData: pointer to the event information structure
16217
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 @see
16219 @return Result of the function call
16220*/
16221WDI_Status
16222WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016223(
Jeff Johnson295189b2012-06-20 16:38:30 -070016224 WDI_ControlBlockType* pWDICtx,
16225 WDI_EventInfoType* pEventData
16226)
16227{
16228 WDI_Status wdiStatus;
16229 WDI_StopRspCb wdiStopRspCb = NULL;
16230
Jeff Johnsone7245742012-09-05 17:12:55 -070016231 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16233
Jeff Johnsone7245742012-09-05 17:12:55 -070016234 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 -------------------------------------------------------------------------*/
16238 if (( NULL == pEventData ) ||
16239 ( NULL == pEventData->pEventData) ||
16240 ( NULL == wdiStopRspCb ))
16241 {
16242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 }
16247
16248 /*-------------------------------------------------------------------------
16249 Extract response and send it to UMAC
16250 -------------------------------------------------------------------------*/
16251 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16252 {
16253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016254 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016255 pEventData->uEventDataSize);
16256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016258 }
16259
16260 /*-------------------------------------------------------------------------
16261 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16265 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 sizeof(halMacStopRspMsg.stopRspParams));
16267
Jeff Johnsone7245742012-09-05 17:12:55 -070016268 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016269
16270 wpalMutexAcquire(&pWDICtx->wptMutex);
16271
16272 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016273 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016274 --------------------------------------------------------------------------*/
16275 if ( WDI_STATUS_SUCCESS != wdiStatus )
16276 {
16277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16278 "Failed to stop the device with status %s (%d)",
16279 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16280 halMacStopRspMsg.stopRspParams.status);
16281
Jeff Johnsone7245742012-09-05 17:12:55 -070016282 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016283 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016284
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016288
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16290
16291 /*Transition now as WDI may get preempted imediately after it sends
16292 up the Stop Response and it will not get to process the state transition
16293 from Main Rsp function*/
16294 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16295 wpalMutexRelease(&pWDICtx->wptMutex);
16296
16297 /*! TO DO: - STOP the Data transport */
16298
16299 /*Notify UMAC*/
16300 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16301
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016303}/*WDI_ProcessStopRsp*/
16304
16305/**
16306 @brief Process Close Rsp function (called when a response
16307 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016308
16309 @param pWDICtx: pointer to the WLAN DAL context
16310 pEventData: pointer to the event information structure
16311
Jeff Johnson295189b2012-06-20 16:38:30 -070016312 @see
16313 @return Result of the function call
16314*/
16315WDI_Status
16316WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016317(
Jeff Johnson295189b2012-06-20 16:38:30 -070016318 WDI_ControlBlockType* pWDICtx,
16319 WDI_EventInfoType* pEventData
16320)
16321{
16322 /*There is no close response comming from HAL - function just kept for
16323 simmetry */
16324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016325 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016326}/*WDI_ProcessCloseRsp*/
16327
16328
16329/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016331============================================================================*/
16332
16333/**
16334 @brief Process Init Scan Rsp function (called when a response
16335 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016336
16337 @param pWDICtx: pointer to the WLAN DAL context
16338 pEventData: pointer to the event information structure
16339
Jeff Johnson295189b2012-06-20 16:38:30 -070016340 @see
16341 @return Result of the function call
16342*/
16343WDI_Status
16344WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016345(
Jeff Johnson295189b2012-06-20 16:38:30 -070016346 WDI_ControlBlockType* pWDICtx,
16347 WDI_EventInfoType* pEventData
16348)
16349{
16350 WDI_Status wdiStatus;
16351 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016352 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016353 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16355
16356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016358 -------------------------------------------------------------------------*/
16359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16360 ( NULL == pEventData->pEventData))
16361 {
16362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016366 }
16367
16368 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16369 if( NULL == wdiInitScanRspCb)
16370 {
16371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016372 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016375 }
16376
16377 /*-------------------------------------------------------------------------
16378 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016379 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016381 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16382 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 sizeof(halInitScanRspMsg.initScanRspParams));
16384
Jeff Johnsone7245742012-09-05 17:12:55 -070016385 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016386
16387 if ( pWDICtx->bInBmps )
16388 {
16389 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016390 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16391 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016393 "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 -080016394 WDI_ASSERT(0);
16395 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 }
16397
16398 /*Notify UMAC*/
16399 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16400
Jeff Johnsone7245742012-09-05 17:12:55 -070016401 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016402}/*WDI_ProcessInitScanRsp*/
16403
16404
16405/**
16406 @brief Process Start Scan Rsp function (called when a response
16407 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016408
16409 @param pWDICtx: pointer to the WLAN DAL context
16410 pEventData: pointer to the event information structure
16411
Jeff Johnson295189b2012-06-20 16:38:30 -070016412 @see
16413 @return Result of the function call
16414*/
16415WDI_Status
16416WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016417(
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 WDI_ControlBlockType* pWDICtx,
16419 WDI_EventInfoType* pEventData
16420)
16421{
16422 WDI_StartScanRspParamsType wdiStartScanParams;
16423 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016424
16425 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16427
16428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 -------------------------------------------------------------------------*/
16431 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16432 ( NULL == pEventData->pEventData))
16433 {
16434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 }
16439
16440 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16441 if( NULL == wdiStartScanRspCb)
16442 {
16443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016444 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016447 }
16448
16449 /*-------------------------------------------------------------------------
16450 Extract response and send it to UMAC
16451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016452 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16453 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016454 sizeof(halStartScanRspMsg.startScanRspParams));
16455
16456 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16457 halStartScanRspMsg.startScanRspParams.status);
16458#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016459 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016460 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016461 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016462 halStartScanRspMsg.startScanRspParams.startTSF,
16463 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016464#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016465
16466 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16467 {
16468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16469 "Start scan failed with status %s (%d)",
16470 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16471 halStartScanRspMsg.startScanRspParams.status);
16472 /* send the status to UMAC, don't return from here*/
16473 }
16474
16475 /*Notify UMAC*/
16476 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16477
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016479
16480}/*WDI_ProcessStartScanRsp*/
16481
16482
16483/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016484 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016486
16487 @param pWDICtx: pointer to the WLAN DAL context
16488 pEventData: pointer to the event information structure
16489
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 @see
16491 @return Result of the function call
16492*/
16493WDI_Status
16494WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016495(
Jeff Johnson295189b2012-06-20 16:38:30 -070016496 WDI_ControlBlockType* pWDICtx,
16497 WDI_EventInfoType* pEventData
16498)
16499{
16500 WDI_Status wdiStatus;
16501 tHalEndScanRspMsg halEndScanRspMsg;
16502 WDI_EndScanRspCb wdiEndScanRspCb;
16503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16504
16505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016507 -------------------------------------------------------------------------*/
16508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16509 ( NULL == pEventData->pEventData))
16510 {
16511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016515 }
16516
16517 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16518
16519 /*-------------------------------------------------------------------------
16520 Extract response and send it to UMAC
16521 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016522 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16523 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 sizeof(halEndScanRspMsg.endScanRspParams));
16525
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016527
16528 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16529 {
16530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16531 "End Scan failed with status %s (%d )",
16532 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16533 halEndScanRspMsg.endScanRspParams.status);
16534 /* send the status to UMAC, don't return from here*/
16535 }
16536
16537 /*Notify UMAC*/
16538 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16539
Jeff Johnsone7245742012-09-05 17:12:55 -070016540 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016541}/*WDI_ProcessEndScanRsp*/
16542
16543
16544/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016547
16548 @param pWDICtx: pointer to the WLAN DAL context
16549 pEventData: pointer to the event information structure
16550
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 @see
16552 @return Result of the function call
16553*/
16554WDI_Status
16555WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016556(
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 WDI_ControlBlockType* pWDICtx,
16558 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016559)
Jeff Johnson295189b2012-06-20 16:38:30 -070016560{
16561 WDI_Status wdiStatus;
16562 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016563
16564 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16566
16567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 -------------------------------------------------------------------------*/
16570 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16571 ( NULL == pEventData->pEventData))
16572 {
16573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 }
16578
16579 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16580
16581 /*-------------------------------------------------------------------------
16582 Extract response and send it to UMAC
16583 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016584 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16585 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016586 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16587
Jeff Johnsone7245742012-09-05 17:12:55 -070016588 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016589
16590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016592 halFinishScanRspMsg.finishScanRspParams.status);
16593
16594 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16595 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16596 {
16597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16598 "Finish Scan failed with status %s (%d)",
16599 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16600 halFinishScanRspMsg.finishScanRspParams.status);
16601 /* send the status to UMAC, don't return from here*/
16602 }
16603
16604 /*Notify UMAC*/
16605 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16606
Jeff Johnsone7245742012-09-05 17:12:55 -070016607 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016608}/*WDI_ProcessFinishScanRsp*/
16609
16610/**
16611 @brief Process Join Response function (called when a response
16612 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016613
16614 @param pWDICtx: pointer to the WLAN DAL context
16615 pEventData: pointer to the event information structure
16616
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 @see
16618 @return Result of the function call
16619*/
16620WDI_Status
16621WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016622(
Jeff Johnson295189b2012-06-20 16:38:30 -070016623 WDI_ControlBlockType* pWDICtx,
16624 WDI_EventInfoType* pEventData
16625)
16626{
16627 WDI_Status wdiStatus;
16628 WDI_JoinRspCb wdiJoinRspCb;
16629 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016630
16631 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16633
16634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016635 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016636 -------------------------------------------------------------------------*/
16637 if (( NULL == pWDICtx ) ||
16638 ( NULL == pWDICtx->pfncRspCB ) ||
16639 ( NULL == pEventData ) ||
16640 ( NULL == pEventData->pEventData))
16641 {
16642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016646 }
16647
16648 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16649
16650 /*-------------------------------------------------------------------------
16651 Extract response and send it to UMAC
16652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016653 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16654 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 sizeof(halJoinRspMsg.joinRspParams));
16656
Jeff Johnsone7245742012-09-05 17:12:55 -070016657 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016658
16659 wpalMutexAcquire(&pWDICtx->wptMutex);
16660
16661 /*-----------------------------------------------------------------------
16662 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016665 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16667 {
16668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016669 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16670 "association no longer in progress %d - mysterious HAL response",
16671 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016672
Jeff Johnsone7245742012-09-05 17:12:55 -070016673 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016674 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016675 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 }
16677
16678 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16679
16680 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016681 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 -----------------------------------------------------------------------*/
16683 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16684 {
16685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16686 "Join only allowed in Joining state - failure state is %d "
16687 "strange HAL response", pBSSSes->wdiAssocState);
16688
Jeff Johnsone7245742012-09-05 17:12:55 -070016689 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16690
Jeff Johnson295189b2012-06-20 16:38:30 -070016691 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 }
16694
16695
16696 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016697 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016698 -----------------------------------------------------------------------*/
16699 if ( WDI_STATUS_SUCCESS != wdiStatus )
16700 {
16701 /*Association was failed by HAL - remove session*/
16702 WDI_DeleteSession(pWDICtx, pBSSSes);
16703
16704 /*Association no longer in progress */
16705 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16706
16707 /*Association no longer in progress - prepare pending assoc for processing*/
16708 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016709
Jeff Johnson295189b2012-06-20 16:38:30 -070016710 }
16711 else
16712 {
16713 /*Transition to state Joining - this may be redundant as we are supposed
16714 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 }
16717
16718 wpalMutexRelease(&pWDICtx->wptMutex);
16719
16720 /*Notify UMAC*/
16721 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16722
Jeff Johnsone7245742012-09-05 17:12:55 -070016723 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016724}/*WDI_ProcessJoinRsp*/
16725
16726
16727/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016728 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016729 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016730
16731 @param pWDICtx: pointer to the WLAN DAL context
16732 pEventData: pointer to the event information structure
16733
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 @see
16735 @return Result of the function call
16736*/
16737WDI_Status
16738WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016739(
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 WDI_ControlBlockType* pWDICtx,
16741 WDI_EventInfoType* pEventData
16742)
16743{
16744 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16745 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016746 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016747 WDI_BSSSessionType* pBSSSes = NULL;
16748
Jeff Johnsone7245742012-09-05 17:12:55 -070016749 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16751 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016752
Jeff Johnson295189b2012-06-20 16:38:30 -070016753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16754
16755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 -------------------------------------------------------------------------*/
16758 if (( NULL == pEventData ) ||
16759 ( NULL == pEventData->pEventData))
16760 {
16761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016765 }
16766
16767 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16768
16769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016770 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016772 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16773 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 sizeof(halConfigBssRspMsg.configBssRspParams));
16775
16776 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16777 halConfigBssRspMsg.configBssRspParams.status);
16778 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16779 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016780 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016781 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16782 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016783
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016785
16786 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016788
16789 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016790 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016791
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016793
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016795 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016796 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16797 #endif
16798 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16799 halConfigBssRspMsg.configBssRspParams.staMac,
16800 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016801
Jeff Johnson295189b2012-06-20 16:38:30 -070016802 wpalMutexAcquire(&pWDICtx->wptMutex);
16803 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016804 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16807 wdiConfigBSSParams.macBSSID,
16808 &pBSSSes);
16809
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 /*-----------------------------------------------------------------------
16811 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016812 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016813 -----------------------------------------------------------------------*/
16814 if ( NULL == pBSSSes )
16815 {
16816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16817 "Association sequence for this BSS does not yet exist "
16818 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016819
16820 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16821
Jeff Johnson295189b2012-06-20 16:38:30 -070016822 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016825
Jeff Johnson295189b2012-06-20 16:38:30 -070016826 /*Save data for this BSS*/
16827 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16828 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016829 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016830 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016831 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016832 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016834 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016837 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16839 pBSSSes->bcastStaIdx =
16840 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016841
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016843
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 /*-------------------------------------------------------------------------
16845 Add Peer STA
16846 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016847 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16849 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016850
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016852 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016854 wdiAddSTAParam.ucHTCapable =
16855 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16856 wdiAddSTAParam.ucStaType =
16857 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16858
Jeff Johnson295189b2012-06-20 16:38:30 -070016859 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016860 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16861 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016862 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016863
16864 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16865 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16866 WDI_MAC_ADDR_LEN);
16867
Jeff Johnson295189b2012-06-20 16:38:30 -070016868 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016869 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016875 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016876 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016879 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016881
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16883 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016884
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16886 /*-------------------------------------------------------------------------
16887 Add Broadcast STA only in AP mode
16888 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016890 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016891 {
16892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16893 "Add BCAST STA to table for index: %d",
16894 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016895
16896 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016897 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016898
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16900 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16901 }
16902 wpalMutexRelease(&pWDICtx->wptMutex);
16903 }
16904 else
16905 {
16906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16907 "Config BSS RSP failed with status : %s(%d)",
16908 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016909 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 halConfigBssRspMsg.configBssRspParams.status);
16911
Jeff Johnsone7245742012-09-05 17:12:55 -070016912
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 /*Association was failed by HAL - remove session*/
16914 WDI_DeleteSession(pWDICtx, pBSSSes);
16915
16916 /*Association no longer in progress */
16917 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16918
16919 /*Association no longer in progress - prepare pending assoc for processing*/
16920 WDI_DequeueAssocRequest(pWDICtx);
16921
16922 }
16923
16924 /*Notify UMAC*/
16925 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16926
Jeff Johnsone7245742012-09-05 17:12:55 -070016927 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016928}/*WDI_ProcessConfigBSSRsp*/
16929
16930
16931/**
16932 @brief Process Del BSS Response function (called when a response
16933 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016934
16935 @param pWDICtx: pointer to the WLAN DAL context
16936 pEventData: pointer to the event information structure
16937
Jeff Johnson295189b2012-06-20 16:38:30 -070016938 @see
16939 @return Result of the function call
16940*/
16941WDI_Status
16942WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016943(
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 WDI_ControlBlockType* pWDICtx,
16945 WDI_EventInfoType* pEventData
16946)
16947{
16948 WDI_DelBSSRspParamsType wdiDelBSSParams;
16949 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016950 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016951 WDI_BSSSessionType* pBSSSes = NULL;
16952
Jeff Johnsone7245742012-09-05 17:12:55 -070016953 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16955
16956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016957 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016958 -------------------------------------------------------------------------*/
16959 if (( NULL == pEventData ) ||
16960 ( NULL == pEventData->pEventData))
16961 {
16962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016966 }
16967
16968 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16969
16970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016971 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016973 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16974 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 sizeof(halDelBssRspMsg.deleteBssRspParams));
16976
16977
16978 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016979 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016980
16981 wpalMutexAcquire(&pWDICtx->wptMutex);
16982
16983 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016984 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016985 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16987 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16988 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016989
16990 /*-----------------------------------------------------------------------
16991 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016992 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016993 -----------------------------------------------------------------------*/
16994 if ( NULL == pBSSSes )
16995 {
16996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16997 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016998 "association no longer in progress - mysterious HAL response");
16999
17000 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17001
17002 wpalMutexRelease(&pWDICtx->wptMutex);
17003 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017004 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017005
17006 /*Extract BSSID for the response to UMAC*/
17007 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17008 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17009
17010 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17011
17012 /*-----------------------------------------------------------------------
17013 The current session will be deleted
17014 -----------------------------------------------------------------------*/
17015 WDI_DeleteSession(pWDICtx, pBSSSes);
17016
17017
17018 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017019 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17020 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017021 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017022 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017023 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017024
17025 /* Delete the STA's in this BSS */
17026 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17027
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 wpalMutexRelease(&pWDICtx->wptMutex);
17029
17030 /*Notify UMAC*/
17031 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17032
Jeff Johnsone7245742012-09-05 17:12:55 -070017033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017034}/*WDI_ProcessDelBSSRsp*/
17035
17036/**
17037 @brief Process Post Assoc Rsp function (called when a response
17038 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017039
17040 @param pWDICtx: pointer to the WLAN DAL context
17041 pEventData: pointer to the event information structure
17042
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 @see
17044 @return Result of the function call
17045*/
17046WDI_Status
17047WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017048(
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 WDI_ControlBlockType* pWDICtx,
17050 WDI_EventInfoType* pEventData
17051)
17052{
17053 WDI_PostAssocRspParamsType wdiPostAssocParams;
17054 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017055 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017056 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017057 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17059
17060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017062 -------------------------------------------------------------------------*/
17063 if (( NULL == pEventData ) ||
17064 ( NULL == pEventData->pEventData))
17065 {
17066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 }
17071
17072 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17073
17074 /*-------------------------------------------------------------------------
17075 Extract response and send it to UMAC
17076 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017077 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17078 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 sizeof(halPostAssocRspMsg.postAssocRspParams));
17080
17081 /*Extract the Post Assoc STA Params */
17082
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017085 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017086 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017087 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17089
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 wdiPostAssocParams.wdiStatus =
17091 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017092
17093 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17094 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17096 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 WDI_MAC_ADDR_LEN);
17098
17099 /* Extract Post Assoc BSS Params */
17100
Jeff Johnsone7245742012-09-05 17:12:55 -070017101 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17102 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17103 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017104
17105 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17106 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17109 .macSTA, WDI_MAC_ADDR_LEN);
17110
Jeff Johnsone7245742012-09-05 17:12:55 -070017111 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17113
Jeff Johnsone7245742012-09-05 17:12:55 -070017114 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017115 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17116
17117 wdiPostAssocParams.bssParams.ucBSSIdx =
17118 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17119
Jeff Johnsone7245742012-09-05 17:12:55 -070017120 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017121 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17122
17123 wpalMutexAcquire(&pWDICtx->wptMutex);
17124
17125 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017126 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017127 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017128 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017129 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017130 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017131
17132 /*-----------------------------------------------------------------------
17133 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017134 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 -----------------------------------------------------------------------*/
17136 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017138 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17139 {
17140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17141 "Association sequence for this BSS does not yet exist or "
17142 "association no longer in progress - mysterious HAL response");
17143
Jeff Johnsone7245742012-09-05 17:12:55 -070017144 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17145
Jeff Johnson295189b2012-06-20 16:38:30 -070017146 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017147 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 }
17149
17150 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017151 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017152 -----------------------------------------------------------------------*/
17153 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17154 {
17155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17156 "Post Assoc not allowed before JOIN - failing request "
17157 "strange HAL response");
17158
Jeff Johnsone7245742012-09-05 17:12:55 -070017159 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17160
Jeff Johnson295189b2012-06-20 16:38:30 -070017161 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 }
17164
17165 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 -----------------------------------------------------------------------*/
17168 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17169 {
17170 /*Association was failed by HAL - remove session*/
17171 WDI_DeleteSession(pWDICtx, pBSSSes);
17172 }
17173 else
17174 {
17175 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017176 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017177
17178 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017179 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017185 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017186 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17187
Jeff Johnsone7245742012-09-05 17:12:55 -070017188 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017189 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17190 }
17191
17192 /*Association no longer in progress */
17193 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17194
17195 /*Association no longer in progress - prepare pending assoc for processing*/
17196 WDI_DequeueAssocRequest(pWDICtx);
17197
17198 wpalMutexRelease(&pWDICtx->wptMutex);
17199
17200 /*Notify UMAC*/
17201 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17202
Jeff Johnsone7245742012-09-05 17:12:55 -070017203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017204}/*WDI_ProcessPostAssocRsp*/
17205
17206/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017207 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017208 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017209
17210 @param pWDICtx: pointer to the WLAN DAL context
17211 pEventData: pointer to the event information structure
17212
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 @see
17214 @return Result of the function call
17215*/
17216WDI_Status
17217WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017218(
Jeff Johnson295189b2012-06-20 16:38:30 -070017219 WDI_ControlBlockType* pWDICtx,
17220 WDI_EventInfoType* pEventData
17221)
17222{
17223 WDI_DelSTARspParamsType wdiDelSTARsp;
17224 WDI_DelSTARspCb wdiDelSTARspCb;
17225 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017226 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17228
17229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017230 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 -------------------------------------------------------------------------*/
17232 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17233 ( NULL == pEventData->pEventData))
17234 {
17235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017236 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017237 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017239 }
17240
17241 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17242
17243 /*-------------------------------------------------------------------------
17244 Extract response and send it to UMAC
17245 -------------------------------------------------------------------------*/
17246 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017247 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017248 sizeof(halDelStaRspMsg.delStaRspParams));
17249
17250 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 wdiDelSTARsp.wdiStatus =
17252 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017253
17254 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17255
17256 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17257 if(staType == WDI_STA_ENTRY_SELF)
17258 {
17259 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17260
17261 /* At this point add the self-STA */
17262
17263 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17264 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17265 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17266
17267#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17268#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17269
17270 //all DPU indices are the same for self STA
17271 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17272 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17273 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17274 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17275 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17276 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017277
17278 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 }
17280 else
17281 {
17282 //Delete the station in the table
17283 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17284 }
17285
17286 /*Notify UMAC*/
17287 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17288
Jeff Johnsone7245742012-09-05 17:12:55 -070017289 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017290}/*WDI_ProcessDelSTARsp*/
17291
17292
17293/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017294 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017295==========================================================================*/
17296
17297/**
17298 @brief Process Set BSS Key Rsp function (called when a response
17299 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017300
17301 @param pWDICtx: pointer to the WLAN DAL context
17302 pEventData: pointer to the event information structure
17303
Jeff Johnson295189b2012-06-20 16:38:30 -070017304 @see
17305 @return Result of the function call
17306*/
17307WDI_Status
17308WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017309(
Jeff Johnson295189b2012-06-20 16:38:30 -070017310 WDI_ControlBlockType* pWDICtx,
17311 WDI_EventInfoType* pEventData
17312)
17313{
17314 WDI_Status wdiStatus;
17315 eHalStatus halStatus;
17316 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17318
17319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017320 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017321 -------------------------------------------------------------------------*/
17322 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17323 ( NULL == pEventData->pEventData))
17324 {
17325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017326 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017329 }
17330
17331 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17332
17333 /*-------------------------------------------------------------------------
17334 Extract response and send it to UMAC
17335 -------------------------------------------------------------------------*/
17336 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017337 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017338
17339 if ( eHAL_STATUS_SUCCESS != halStatus )
17340 {
17341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17342 "Set BSS Key failed with status %s (%d)",
17343 WDI_getHALStatusMsgString(halStatus),
17344 halStatus);
17345 /* send the status to UMAC, don't return from here*/
17346 }
17347
17348 /*Notify UMAC*/
17349 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17350
Jeff Johnsone7245742012-09-05 17:12:55 -070017351 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017352}/*WDI_ProcessSetBssKeyRsp*/
17353
17354/**
17355 @brief Process Remove BSS Key Rsp function (called when a response
17356 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017357
17358 @param pWDICtx: pointer to the WLAN DAL context
17359 pEventData: pointer to the event information structure
17360
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 @see
17362 @return Result of the function call
17363*/
17364WDI_Status
17365WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017366(
Jeff Johnson295189b2012-06-20 16:38:30 -070017367 WDI_ControlBlockType* pWDICtx,
17368 WDI_EventInfoType* pEventData
17369)
17370{
17371 WDI_Status wdiStatus;
17372 eHalStatus halStatus;
17373 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17375
17376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 -------------------------------------------------------------------------*/
17379 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17380 ( NULL == pEventData->pEventData))
17381 {
17382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 }
17387
17388 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17389
17390 /*-------------------------------------------------------------------------
17391 Extract response and send it to UMAC
17392 -------------------------------------------------------------------------*/
17393 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017394 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017395
17396 if ( eHAL_STATUS_SUCCESS != halStatus )
17397 {
17398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17399 "Remove BSS Key failed with status %s (%d )",
17400 WDI_getHALStatusMsgString(halStatus),
17401 halStatus);
17402 /* send the status to UMAC, don't return from here*/
17403 }
17404
17405 /*Notify UMAC*/
17406 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17407
Jeff Johnsone7245742012-09-05 17:12:55 -070017408 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017409}/*WDI_ProcessSetBssKeyRsp*/
17410
17411
17412/**
17413 @brief Process Set STA Key Rsp function (called when a response
17414 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017415
17416 @param pWDICtx: pointer to the WLAN DAL context
17417 pEventData: pointer to the event information structure
17418
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 @see
17420 @return Result of the function call
17421*/
17422WDI_Status
17423WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017424(
Jeff Johnson295189b2012-06-20 16:38:30 -070017425 WDI_ControlBlockType* pWDICtx,
17426 WDI_EventInfoType* pEventData
17427)
17428{
17429 WDI_Status wdiStatus;
17430 eHalStatus halStatus;
17431 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17433
17434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017436 -------------------------------------------------------------------------*/
17437 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17438 ( NULL == pEventData->pEventData))
17439 {
17440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 }
17445
17446 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17447
17448 /*-------------------------------------------------------------------------
17449 Extract response and send it to UMAC
17450 -------------------------------------------------------------------------*/
17451 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017452 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017453
17454 if ( eHAL_STATUS_SUCCESS != halStatus )
17455 {
17456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17457 "Set STA Key failed with status %s (%d)",
17458 WDI_getHALStatusMsgString(halStatus),
17459 halStatus);
17460 /* send the status to UMAC, don't return from here*/
17461 }
17462
17463 /*Notify UMAC*/
17464 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17465
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017467}/*WDI_ProcessSetSTAKeyRsp*/
17468
17469/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017470 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017471 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017472
17473 @param pWDICtx: pointer to the WLAN DAL context
17474 pEventData: pointer to the event information structure
17475
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 @see
17477 @return Result of the function call
17478*/
17479WDI_Status
17480WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017481(
Jeff Johnson295189b2012-06-20 16:38:30 -070017482 WDI_ControlBlockType* pWDICtx,
17483 WDI_EventInfoType* pEventData
17484)
17485{
17486 WDI_Status wdiStatus;
17487 eHalStatus halStatus;
17488 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17490
17491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017493 -------------------------------------------------------------------------*/
17494 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17495 ( NULL == pEventData->pEventData))
17496 {
17497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017501 }
17502
17503 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17504
17505 /*-------------------------------------------------------------------------
17506 Extract response and send it to UMAC
17507 -------------------------------------------------------------------------*/
17508 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017509 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017510
17511 if ( eHAL_STATUS_SUCCESS != halStatus )
17512 {
17513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17514 "Remove STA Key failed with status %s (%d)",
17515 WDI_getHALStatusMsgString(halStatus),
17516 halStatus);
17517 /* send the status to UMAC, don't return from here*/
17518 }
17519
17520 /*Notify UMAC*/
17521 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17522
Jeff Johnsone7245742012-09-05 17:12:55 -070017523 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017524}/*WDI_ProcessRemoveStaKeyRsp*/
17525
17526/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017527 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017529
17530 @param pWDICtx: pointer to the WLAN DAL context
17531 pEventData: pointer to the event information structure
17532
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 @see
17534 @return Result of the function call
17535*/
17536WDI_Status
17537WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017538(
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 WDI_ControlBlockType* pWDICtx,
17540 WDI_EventInfoType* pEventData
17541)
17542{
17543 WDI_Status wdiStatus;
17544 eHalStatus halStatus;
17545 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17547
17548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017550 -------------------------------------------------------------------------*/
17551 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17552 ( NULL == pEventData->pEventData))
17553 {
17554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 }
17559
17560 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17561
17562 /*-------------------------------------------------------------------------
17563 Extract response and send it to UMAC
17564 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017565 wpalMemoryCopy( &halStatus,
17566 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 sizeof(halStatus));
17568
Jeff Johnsone7245742012-09-05 17:12:55 -070017569 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017570
17571 if ( eHAL_STATUS_SUCCESS != halStatus )
17572 {
17573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17574 "Set STA Key failed with status %s (%d)",
17575 WDI_getHALStatusMsgString(halStatus),
17576 halStatus);
17577 /* send the status to UMAC, don't return from here*/
17578 }
17579
17580 /*Notify UMAC*/
17581 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17582
Jeff Johnsone7245742012-09-05 17:12:55 -070017583 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017584}/*WDI_ProcessSetSTABcastKeyRsp*/
17585
17586/**
17587 @brief Process Remove STA Bcast Key Rsp function (called when a
17588 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017589
17590 @param pWDICtx: pointer to the WLAN DAL context
17591 pEventData: pointer to the event information structure
17592
Jeff Johnson295189b2012-06-20 16:38:30 -070017593 @see
17594 @return Result of the function call
17595*/
17596WDI_Status
17597WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017598(
Jeff Johnson295189b2012-06-20 16:38:30 -070017599 WDI_ControlBlockType* pWDICtx,
17600 WDI_EventInfoType* pEventData
17601)
17602{
17603 WDI_Status wdiStatus;
17604 eHalStatus halStatus;
17605 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17607
17608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 -------------------------------------------------------------------------*/
17611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17612 ( NULL == pEventData->pEventData))
17613 {
17614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017618 }
17619
17620 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17621
17622 /*-------------------------------------------------------------------------
17623 Extract response and send it to UMAC
17624 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017625 wpalMemoryCopy( &halStatus,
17626 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017627 sizeof(halStatus));
17628
Jeff Johnsone7245742012-09-05 17:12:55 -070017629 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017630
17631 if ( eHAL_STATUS_SUCCESS != halStatus )
17632 {
17633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17634 "Remove STA Key failed with status %s (%d)",
17635 WDI_getHALStatusMsgString(halStatus),
17636 halStatus);
17637 /* send the status to UMAC, don't return from here*/
17638 }
17639
17640 /*Notify UMAC*/
17641 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17642
Jeff Johnsone7245742012-09-05 17:12:55 -070017643 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017644}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17645
17646
17647/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017648 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017649==========================================================================*/
17650
17651/**
17652 @brief Process Add TSpec Rsp function (called when a response
17653 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017654
17655 @param pWDICtx: pointer to the WLAN DAL context
17656 pEventData: pointer to the event information structure
17657
Jeff Johnson295189b2012-06-20 16:38:30 -070017658 @see
17659 @return Result of the function call
17660*/
17661WDI_Status
17662WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017663(
Jeff Johnson295189b2012-06-20 16:38:30 -070017664 WDI_ControlBlockType* pWDICtx,
17665 WDI_EventInfoType* pEventData
17666)
17667{
17668 WDI_Status wdiStatus;
17669 eHalStatus halStatus;
17670 WDI_AddTsRspCb wdiAddTsRspCb;
17671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17672
17673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017674 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017675 -------------------------------------------------------------------------*/
17676 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17677 ( NULL == pEventData->pEventData))
17678 {
17679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017680 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017683 }
17684
17685 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17686
17687 /*-------------------------------------------------------------------------
17688 Extract response and send it to UMAC
17689 -------------------------------------------------------------------------*/
17690 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017691 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017692
17693 /*Notify UMAC*/
17694 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17695
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017697}/*WDI_ProcessAddTSpecRsp*/
17698
17699
Sunil Duttbd736ed2014-05-26 21:19:41 +053017700
17701#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17702
17703WDI_Status
17704WDI_ProcessLLStatsSetRsp
17705(
17706 WDI_ControlBlockType* pWDICtx,
17707 WDI_EventInfoType* pEventData
17708)
17709{
17710 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17711
17712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17713 "%s: Enter ", __func__);
17714 /*-------------------------------------------------------------------------
17715 Sanity check
17716 -------------------------------------------------------------------------*/
17717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17718 ( NULL == pEventData->pEventData))
17719 {
17720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17721 "%s: Invalid parameters", __func__);
17722 WDI_ASSERT(0);
17723 return WDI_STATUS_E_FAILURE;
17724 }
17725
17726 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17727
17728 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17729
17730 return WDI_STATUS_SUCCESS;
17731}
17732
17733WDI_Status
17734WDI_ProcessLLStatsGetRsp
17735(
17736 WDI_ControlBlockType* pWDICtx,
17737 WDI_EventInfoType* pEventData
17738)
17739{
17740 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17741
17742 /*-------------------------------------------------------------------------
17743 Sanity check
17744 -------------------------------------------------------------------------*/
17745 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17746 ( NULL == pEventData->pEventData))
17747 {
17748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17749 "%s: Invalid parameters", __func__);
17750 WDI_ASSERT(0);
17751 return WDI_STATUS_E_FAILURE;
17752 }
17753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17754 "%s: Enter ", __func__);
17755
17756 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17757
17758 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17759
17760 return WDI_STATUS_SUCCESS;
17761}
17762
17763WDI_Status
17764WDI_ProcessLLStatsClearRsp
17765(
17766 WDI_ControlBlockType* pWDICtx,
17767 WDI_EventInfoType* pEventData
17768)
17769{
17770 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17771
17772 /*-------------------------------------------------------------------------
17773 Sanity check
17774 -------------------------------------------------------------------------*/
17775 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17776 ( NULL == pEventData->pEventData))
17777 {
17778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17779 "%s: Invalid parameters", __func__);
17780 WDI_ASSERT(0);
17781 return WDI_STATUS_E_FAILURE;
17782 }
17783
17784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17785 "%s: CLEAR RESPONSE CALL BACK", __func__);
17786 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17787
17788 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17789
17790 return WDI_STATUS_SUCCESS;
17791}
17792#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17793
Jeff Johnson295189b2012-06-20 16:38:30 -070017794/**
17795 @brief Process Del TSpec Rsp function (called when a response
17796 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017797
17798 @param pWDICtx: pointer to the WLAN DAL context
17799 pEventData: pointer to the event information structure
17800
Jeff Johnson295189b2012-06-20 16:38:30 -070017801 @see
17802 @return Result of the function call
17803*/
17804WDI_Status
17805WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017806(
Jeff Johnson295189b2012-06-20 16:38:30 -070017807 WDI_ControlBlockType* pWDICtx,
17808 WDI_EventInfoType* pEventData
17809)
17810{
17811 WDI_Status wdiStatus;
17812 eHalStatus halStatus;
17813 WDI_DelTsRspCb wdiDelTsRspCb;
17814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17815
17816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017818 -------------------------------------------------------------------------*/
17819 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17820 ( NULL == pEventData->pEventData))
17821 {
17822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 }
17827
17828 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17829
17830 /*-------------------------------------------------------------------------
17831 Extract response and send it to UMAC
17832 -------------------------------------------------------------------------*/
17833 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017834 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017835
17836 /*Notify UMAC*/
17837 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17838
Jeff Johnsone7245742012-09-05 17:12:55 -070017839 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017840}/*WDI_ProcessDelTSpecRsp*/
17841
17842/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017845
17846 @param pWDICtx: pointer to the WLAN DAL context
17847 pEventData: pointer to the event information structure
17848
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 @see
17850 @return Result of the function call
17851*/
17852WDI_Status
17853WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017854(
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 WDI_ControlBlockType* pWDICtx,
17856 WDI_EventInfoType* pEventData
17857)
17858{
17859 WDI_Status wdiStatus;
17860 eHalStatus halStatus;
17861 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17863
17864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017866 -------------------------------------------------------------------------*/
17867 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17868 ( NULL == pEventData->pEventData))
17869 {
17870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017874 }
17875
17876 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17877
17878 /*-------------------------------------------------------------------------
17879 Extract response and send it to UMAC
17880 -------------------------------------------------------------------------*/
17881 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017882 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017883
17884 /*Notify UMAC*/
17885 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17886
Jeff Johnsone7245742012-09-05 17:12:55 -070017887 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017888}/*WDI_ProcessUpdateEDCAParamsRsp*/
17889
17890
17891/**
17892 @brief Process Add BA Rsp function (called when a response
17893 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017894
17895 @param pWDICtx: pointer to the WLAN DAL context
17896 pEventData: pointer to the event information structure
17897
Jeff Johnson295189b2012-06-20 16:38:30 -070017898 @see
17899 @return Result of the function call
17900*/
17901WDI_Status
17902WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017903(
Jeff Johnson295189b2012-06-20 16:38:30 -070017904 WDI_ControlBlockType* pWDICtx,
17905 WDI_EventInfoType* pEventData
17906)
17907{
17908 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17909
17910 tAddBASessionRspParams halBASessionRsp;
17911 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17912
Jeff Johnsone7245742012-09-05 17:12:55 -070017913
Jeff Johnson295189b2012-06-20 16:38:30 -070017914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17915
17916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017918 -------------------------------------------------------------------------*/
17919 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17920 ( NULL == pEventData->pEventData))
17921 {
17922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017926 }
17927
17928 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17929
17930 /*-------------------------------------------------------------------------
17931 Extract response and send it to UMAC
17932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017933 wpalMemoryCopy( &halBASessionRsp,
17934 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 sizeof(halBASessionRsp));
17936
17937 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17938
Jeff Johnson43971f52012-07-17 12:26:56 -070017939 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017940 {
17941 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17942 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17943 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17944 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17945 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17946 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17947 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17948 }
17949
17950 /*Notify UMAC*/
17951 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17952
Jeff Johnsone7245742012-09-05 17:12:55 -070017953 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017954}/*WDI_ProcessAddSessionBARsp*/
17955
17956
17957/**
17958 @brief Process Del BA Rsp function (called when a response
17959 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017960
17961 @param pWDICtx: pointer to the WLAN DAL context
17962 pEventData: pointer to the event information structure
17963
Jeff Johnson295189b2012-06-20 16:38:30 -070017964 @see
17965 @return Result of the function call
17966*/
17967WDI_Status
17968WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017969(
Jeff Johnson295189b2012-06-20 16:38:30 -070017970 WDI_ControlBlockType* pWDICtx,
17971 WDI_EventInfoType* pEventData
17972)
17973{
17974 WDI_Status wdiStatus;
17975 eHalStatus halStatus;
17976 WDI_DelBARspCb wdiDelBARspCb;
17977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17978
17979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 -------------------------------------------------------------------------*/
17982 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17983 ( NULL == pEventData->pEventData))
17984 {
17985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017986 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017989 }
17990
17991 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17992
17993 /*-------------------------------------------------------------------------
17994 Extract response and send it to UMAC
17995 -------------------------------------------------------------------------*/
17996 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017997 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017998
17999 if ( eHAL_STATUS_SUCCESS == halStatus )
18000 {
18001 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18002 }
18003
18004 /*Notify UMAC*/
18005 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18006
Jeff Johnsone7245742012-09-05 17:12:55 -070018007 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018008}/*WDI_ProcessDelBARsp*/
18009
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018010#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018011/**
18012 @brief Process TSM Stats Rsp function (called when a response
18013 is being received over the bus from HAL)
18014
18015 @param pWDICtx: pointer to the WLAN DAL context
18016 pEventData: pointer to the event information structure
18017
18018 @see
18019 @return Result of the function call
18020*/
18021WDI_Status
18022WDI_ProcessTsmStatsRsp
18023(
18024 WDI_ControlBlockType* pWDICtx,
18025 WDI_EventInfoType* pEventData
18026)
18027{
18028 WDI_TsmRspCb wdiTsmStatsRspCb;
18029 tTsmStatsRspMsg halTsmStatsRspMsg;
18030 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18032
18033 /*-------------------------------------------------------------------------
18034 Sanity check
18035 -------------------------------------------------------------------------*/
18036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18037 ( NULL == pEventData->pEventData))
18038 {
18039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018041 WDI_ASSERT(0);
18042 return WDI_STATUS_E_FAILURE;
18043 }
18044
18045 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18046
18047 /*-------------------------------------------------------------------------
18048 Unpack HAL Response Message - the header was already extracted by the
18049 main Response Handling procedure
18050 -------------------------------------------------------------------------*/
18051 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18052 pEventData->pEventData,
18053 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18054
18055 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18056 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18057 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18058 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18059 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18060 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18061 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18062 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18063 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18064 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18065 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18066 halTsmStatsRspMsg.tsmStatsRspParams.status);
18067
18068 /*Notify UMAC*/
18069 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18070
18071 return WDI_STATUS_SUCCESS;
18072}/*WDI_ProcessTsmStatsRsp*/
18073
18074#endif
18075
18076
18077
18078/**
18079 @brief Process Flush AC Rsp function (called when a response
18080 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018081
18082 @param pWDICtx: pointer to the WLAN DAL context
18083 pEventData: pointer to the event information structure
18084
Jeff Johnson295189b2012-06-20 16:38:30 -070018085 @see
18086 @return Result of the function call
18087*/
18088WDI_Status
18089WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018090(
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 WDI_ControlBlockType* pWDICtx,
18092 WDI_EventInfoType* pEventData
18093)
18094{
18095 WDI_Status wdiStatus;
18096 eHalStatus halStatus;
18097 WDI_FlushAcRspCb wdiFlushAcRspCb;
18098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18099
18100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018101 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018102 -------------------------------------------------------------------------*/
18103 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18104 ( NULL == pEventData->pEventData))
18105 {
18106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 }
18111
18112 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18113
18114 /*-------------------------------------------------------------------------
18115 Extract response and send it to UMAC
18116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018117 wpalMemoryCopy( &halStatus,
18118 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018119 sizeof(halStatus));
18120
Jeff Johnsone7245742012-09-05 17:12:55 -070018121 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018122
18123 /*Notify UMAC*/
18124 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18125
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018127}/*WDI_ProcessFlushAcRsp*/
18128
18129/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018130 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018131 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018132
18133 @param pWDICtx: pointer to the WLAN DAL context
18134 pEventData: pointer to the event information structure
18135
Jeff Johnson295189b2012-06-20 16:38:30 -070018136 @see
18137 @return Result of the function call
18138*/
18139WDI_Status
18140WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018141(
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 WDI_ControlBlockType* pWDICtx,
18143 WDI_EventInfoType* pEventData
18144)
18145{
18146 WDI_Status wdiStatus;
18147 eHalStatus halStatus;
18148 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18150
18151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 -------------------------------------------------------------------------*/
18154 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18155 ( NULL == pEventData->pEventData))
18156 {
18157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018161 }
18162
18163 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18164
18165 /*-------------------------------------------------------------------------
18166 Extract response and send it to UMAC
18167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018168 wpalMemoryCopy( &halStatus,
18169 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018170 sizeof(halStatus));
18171
Jeff Johnsone7245742012-09-05 17:12:55 -070018172 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018173
18174 /*Notify UMAC*/
18175 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18176
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018178}/*WDI_ProcessBtAmpEventRsp*/
18179
18180
18181/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018183 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018184
18185 @param pWDICtx: pointer to the WLAN DAL context
18186 pEventData: pointer to the event information structure
18187
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 @see
18189 @return Result of the function call
18190*/
18191WDI_Status
18192WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018193(
Jeff Johnson295189b2012-06-20 16:38:30 -070018194 WDI_ControlBlockType* pWDICtx,
18195 WDI_EventInfoType* pEventData
18196)
18197{
18198 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18199 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18200 tAddStaSelfRspMsg halAddStaSelfRsp;
18201 WDI_AddStaParams wdiAddSTAParam = {0};
18202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18203
18204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018205 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 -------------------------------------------------------------------------*/
18207 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18208 ( NULL == pEventData->pEventData))
18209 {
18210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018211 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018214 }
18215
Jeff Johnsone7245742012-09-05 17:12:55 -070018216 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18218
18219 /*-------------------------------------------------------------------------
18220 Extract response and send it to UMAC
18221 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018222 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18223 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018224 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18225
18226
Jeff Johnsone7245742012-09-05 17:12:55 -070018227 wdiAddSTASelfParams.wdiStatus =
18228 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018229
Jeff Johnsone7245742012-09-05 17:12:55 -070018230 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018231 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018232 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018234 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18236
18237 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18238 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18239 WDI_MAC_ADDR_LEN);
18240
18241
18242#ifdef HAL_SELF_STA_PER_BSS
18243
18244 /* At this point add the self-STA */
18245
18246 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18247 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18248 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18249
18250 //all DPU indices are the same for self STA
18251
18252 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018253 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018254 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18255 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18256 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18257 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18258 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18259
18260 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18261 WDI_MAC_ADDR_LEN);
18262
18263 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18264 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18265
Jeff Johnsone7245742012-09-05 17:12:55 -070018266 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018267 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18268 {
18269 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18270 }
18271#endif
18272
18273 /*Notify UMAC*/
18274 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18275
Jeff Johnsone7245742012-09-05 17:12:55 -070018276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018277}/*WDI_ProcessAddSTASelfRsp*/
18278
18279
18280
18281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018282 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018283 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018284
18285 @param pWDICtx: pointer to the WLAN DAL context
18286 pEventData: pointer to the event information structure
18287
Jeff Johnson295189b2012-06-20 16:38:30 -070018288 @see
18289 @return Result of the function call
18290*/
18291WDI_Status
18292WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018293(
Jeff Johnson295189b2012-06-20 16:38:30 -070018294 WDI_ControlBlockType* pWDICtx,
18295 WDI_EventInfoType* pEventData
18296)
18297{
18298 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18299 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18300 tDelStaSelfRspParams delStaSelfRspParams;
18301 wpt_uint8 ucStaIdx;
18302
18303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18304
18305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018307 -------------------------------------------------------------------------*/
18308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18309 ( NULL == pEventData->pEventData))
18310 {
18311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018315 }
18316
18317 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18318
18319 /*-------------------------------------------------------------------------
18320 Extract response and send it to UMAC
18321 -------------------------------------------------------------------------*/
18322
Jeff Johnsone7245742012-09-05 17:12:55 -070018323 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018324 (wpt_uint8*)pEventData->pEventData,
18325 sizeof(tDelStaSelfRspParams));
18326
Jeff Johnsone7245742012-09-05 17:12:55 -070018327 wdiDelStaSelfRspParams.wdiStatus =
18328 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018329
Jeff Johnsone7245742012-09-05 17:12:55 -070018330 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18332 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18333 {
18334 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018335 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018336 delStaSelfRspParams.selfMacAddr,
18337 &ucStaIdx);
18338 if(WDI_STATUS_E_FAILURE == wdiStatus)
18339 {
18340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018341 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018342 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018343 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018344 }
18345 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18346 }
18347
18348 /*Notify UMAC*/
18349 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18350
18351 return WDI_STATUS_SUCCESS;
18352}
18353
Jeff Johnsone7245742012-09-05 17:12:55 -070018354#ifdef FEATURE_OEM_DATA_SUPPORT
18355/**
18356 @brief Start Oem Data Rsp function (called when a
18357 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018358
Jeff Johnsone7245742012-09-05 17:12:55 -070018359 @param pWDICtx: pointer to the WLAN DAL context
18360 pEventData: pointer to the event information structure
18361
18362 @see
18363 @return Result of the function call
18364*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018365
18366WDI_Status
18367WDI_ProcessStartOemDataRsp
18368(
18369 WDI_ControlBlockType* pWDICtx,
18370 WDI_EventInfoType* pEventData
18371)
18372{
18373 WDI_oemDataRspCb wdiOemDataRspCb;
18374 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18375 tStartOemDataRspParams* halStartOemDataRspParams;
18376
18377 /*-------------------------------------------------------------------------
18378 Sanity check
18379 -------------------------------------------------------------------------*/
18380 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18381 ( NULL == pEventData->pEventData))
18382 {
18383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018384 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018385 WDI_ASSERT(0);
18386 return WDI_STATUS_E_FAILURE;
18387 }
18388
18389 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18390
18391 /*-------------------------------------------------------------------------
18392 Extract response and send it to UMAC
18393 -------------------------------------------------------------------------*/
18394 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18395
18396
18397 //It is the responsibility of the application code to check for failure
18398 //conditions!
18399
18400 //Allocate memory for WDI OEM DATA RSP structure
18401 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18402
18403 if(NULL == wdiOemDataRspParams)
18404 {
18405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018406 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018407 pWDICtx, pEventData, pEventData->pEventData);
18408 WDI_ASSERT(0);
18409 return WDI_STATUS_E_FAILURE;
18410 }
18411
18412 /* Populate WDI structure members */
18413 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18414
18415 /*Notify UMAC*/
18416 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18417
18418 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18419 wpalMemoryFree(wdiOemDataRspParams);
18420
18421 return WDI_STATUS_SUCCESS;
18422}/*WDI_PrcoessStartOemDataRsp*/
18423#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018424
18425/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018426 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018427===========================================================================*/
18428
18429/**
18430 @brief Process Channel Switch Rsp function (called when a response
18431 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018432
18433 @param pWDICtx: pointer to the WLAN DAL context
18434 pEventData: pointer to the event information structure
18435
Jeff Johnson295189b2012-06-20 16:38:30 -070018436 @see
18437 @return Result of the function call
18438*/
18439WDI_Status
18440WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018441(
Jeff Johnson295189b2012-06-20 16:38:30 -070018442 WDI_ControlBlockType* pWDICtx,
18443 WDI_EventInfoType* pEventData
18444)
18445{
18446 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18447 WDI_SwitchChRspCb wdiChSwitchRspCb;
18448 tSwitchChannelRspParams halSwitchChannelRsp;
18449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18450
18451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018452 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018453 -------------------------------------------------------------------------*/
18454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18455 ( NULL == pEventData->pEventData))
18456 {
18457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 }
18462
18463 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18464
18465 /*-------------------------------------------------------------------------
18466 Extract response and send it to UMAC
18467 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018468 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 (wpt_uint8*)pEventData->pEventData,
18470 sizeof(halSwitchChannelRsp));
18471
Jeff Johnsone7245742012-09-05 17:12:55 -070018472 wdiSwitchChRsp.wdiStatus =
18473 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18475
18476#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018477 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018478#endif
18479
18480 /*Notify UMAC*/
18481 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18482
Jeff Johnsone7245742012-09-05 17:12:55 -070018483 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018484}/*WDI_ProcessChannelSwitchRsp*/
18485
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018486/**
18487 @brief Process Channel Switch Rsp function (called when a response
18488 is being received over the bus from HAL against
18489 WDI_ProcessChannelSwitchReq_V1)
18490
18491 @param pWDICtx: pointer to the WLAN DAL context
18492 pEventData: pointer to the event information structure
18493
18494 @see
18495 @return Result of the function call
18496*/
18497
18498WDI_Status
18499WDI_ProcessChannelSwitchRsp_V1
18500(
18501 WDI_ControlBlockType* pWDICtx,
18502 WDI_EventInfoType* pEventData
18503)
18504{
18505 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18506 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18507 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18509
18510 /*-------------------------------------------------------------------------
18511 Sanity check
18512 -------------------------------------------------------------------------*/
18513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18514 ( NULL == pEventData->pEventData))
18515 {
18516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18517 "%s: Invalid parameters", __func__);
18518 WDI_ASSERT(0);
18519 return WDI_STATUS_E_FAILURE;
18520 }
18521
18522 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18523
18524 /*-------------------------------------------------------------------------
18525 Extract response and send it to UMAC
18526 -------------------------------------------------------------------------*/
18527 wpalMemoryCopy( &halSwitchChannelRsp,
18528 (wpt_uint8*)pEventData->pEventData,
18529 sizeof(halSwitchChannelRsp));
18530
18531 wdiSwitchChRsp.wdiStatus =
18532 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18533 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18534
18535#ifdef WLAN_FEATURE_VOWIFI
18536 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18537#endif
18538
18539 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18540 if (( NULL == wdiChSwitchRspCb ) )
18541 {
18542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18543 "%s: ### Call back function is null", __func__);
18544 WDI_ASSERT(0);
18545 return WDI_STATUS_E_FAILURE;
18546 }
18547 /*Notify UMAC*/
18548 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18549
18550 return WDI_STATUS_SUCCESS;
18551}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018552
18553/**
18554 @brief Process Config STA Rsp function (called when a response
18555 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018556
18557 @param pWDICtx: pointer to the WLAN DAL context
18558 pEventData: pointer to the event information structure
18559
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 @see
18561 @return Result of the function call
18562*/
18563WDI_Status
18564WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018565(
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 WDI_ControlBlockType* pWDICtx,
18567 WDI_EventInfoType* pEventData
18568)
18569{
18570 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18571 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18572 WDI_AddStaParams wdiAddSTAParam;
18573
18574 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018575 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018576
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18579
18580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018582 -------------------------------------------------------------------------*/
18583 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18584 ( NULL == pEventData->pEventData))
18585 {
18586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 }
18591
18592 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18593
18594 /*-------------------------------------------------------------------------
18595 Extract response and send it to UMAC
18596 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018597 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18598 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018599 sizeof(halConfigStaRsp.configStaRspParams));
18600
18601
18602 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18603 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18604 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18605 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18606 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18607
18608 /* MAC Address of STA - take from cache as it does not come back in the
18609 response*/
18610 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018612 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018613
18614 wdiCfgSTAParams.wdiStatus =
18615 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018616
18617 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18618 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18619 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18620
18621 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18622 {
18623 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18624 {
18625 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018626 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018627 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18628 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018629
Jeff Johnson295189b2012-06-20 16:38:30 -070018630 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018631 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018633 wdiAddSTAParam.ucHTCapable =
18634 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18635 wdiAddSTAParam.ucStaType =
18636 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018637 wdiAddSTAParam.ucRmfEnabled =
18638 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018639
Jeff Johnson295189b2012-06-20 16:38:30 -070018640 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018641 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18642 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018643 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018644
18645 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18646 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18647 WDI_MAC_ADDR_LEN);
18648
18649 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18650 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18651 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018652
18653 if ( NULL == pBSSSes )
18654 {
18655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18656 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018657
Jeff Johnson295189b2012-06-20 16:38:30 -070018658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018659 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018660 }
18661
18662 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018663 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018664 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018665 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018666 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018667 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018668 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018669 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018670 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018671 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018672
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18674 }
18675 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18676 {
18677 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18678
Jeff Johnsone7245742012-09-05 17:12:55 -070018679 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018680 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018681 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018682 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018685 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018686 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018687 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018688 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018689 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018690 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018691 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 halConfigStaRsp.configStaRspParams.ucUcastSig;
18693 }
18694 }
18695
18696 /*Notify UMAC*/
18697 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18698
Jeff Johnsone7245742012-09-05 17:12:55 -070018699 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018700}/*WDI_ProcessConfigStaRsp*/
18701
18702
18703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018706
18707 @param pWDICtx: pointer to the WLAN DAL context
18708 pEventData: pointer to the event information structure
18709
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 @see
18711 @return Result of the function call
18712*/
18713WDI_Status
18714WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018715(
Jeff Johnson295189b2012-06-20 16:38:30 -070018716 WDI_ControlBlockType* pWDICtx,
18717 WDI_EventInfoType* pEventData
18718)
18719{
18720 WDI_Status wdiStatus;
18721 eHalStatus halStatus;
18722 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18723
18724 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018725 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18727
18728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 -------------------------------------------------------------------------*/
18731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18732 ( NULL == pEventData->pEventData))
18733 {
18734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018738 }
18739
18740 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18741
18742 wpalMutexAcquire(&pWDICtx->wptMutex);
18743
18744 /*If the link is being transitioned to idle - the BSS is to be deleted
18745 - this type of ending a session is possible when UMAC has failed an
18746 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018747 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018748 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18749 {
18750 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018751 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018753 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18754 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18755 &pBSSSes);
18756
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 /*-----------------------------------------------------------------------
18758 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018759 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018760 -----------------------------------------------------------------------*/
18761 if ( NULL == pBSSSes )
18762 {
18763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18764 "Set link response received outside association session");
18765 }
18766 else
18767 {
18768 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18769 will be del BSS coming after this to stop the beaconing & cleaning up the
18770 sessions*/
18771 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18772 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18773 {
18774 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018775 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 -----------------------------------------------------------------------*/
18777 WDI_DeleteSession(pWDICtx, pBSSSes);
18778
18779 /*-----------------------------------------------------------------------
18780 Check to see if this association is in progress - if so disable the
18781 flag as this has ended
18782 -----------------------------------------------------------------------*/
18783 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018784 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018785 /*Association no longer in progress */
18786 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18787 /*Association no longer in progress - prepare pending assoc for processing*/
18788 WDI_DequeueAssocRequest(pWDICtx);
18789 }
18790 }
18791 }
18792 }
18793 /* If the link state has been set to POST ASSOC, reset the "association in
18794 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018795 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018796 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18797 {
18798 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18799 WDI_DequeueAssocRequest(pWDICtx);
18800 }
18801
18802 wpalMutexRelease(&pWDICtx->wptMutex);
18803
18804 /*-------------------------------------------------------------------------
18805 Extract response and send it to UMAC
18806 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018807 wpalMemoryCopy( &halStatus,
18808 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018809 sizeof(halStatus));
18810
Jeff Johnsone7245742012-09-05 17:12:55 -070018811 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018812
18813 /*Notify UMAC*/
18814 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18815
Jeff Johnsone7245742012-09-05 17:12:55 -070018816 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018817}/*WDI_ProcessSetLinkStateRsp*/
18818
18819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018820 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018822
18823 @param pWDICtx: pointer to the WLAN DAL context
18824 pEventData: pointer to the event information structure
18825
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 @see
18827 @return Result of the function call
18828*/
18829WDI_Status
18830WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018831(
Jeff Johnson295189b2012-06-20 16:38:30 -070018832 WDI_ControlBlockType* pWDICtx,
18833 WDI_EventInfoType* pEventData
18834)
18835{
18836 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18837 WDI_GetStatsRspCb wdiGetStatsRspCb;
18838 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018839
Jeff Johnson295189b2012-06-20 16:38:30 -070018840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18841
18842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018844 -------------------------------------------------------------------------*/
18845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18846 ( NULL == pEventData->pEventData))
18847 {
18848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018852 }
18853
18854 /*-------------------------------------------------------------------------
18855 Extract response and send it to UMAC
18856 -------------------------------------------------------------------------*/
18857 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18858
18859 /*allocate the stats response buffer */
18860 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18861 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18862 + sizeof(WDI_GetStatsRspParamsType));
18863
18864 if(NULL == wdiGetStatsRsp)
18865 {
18866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018867 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 pWDICtx, pEventData, pEventData->pEventData);
18869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 }
18872
18873 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18874
18875 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18876 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18877 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18878 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18879 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18880 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18881
18882 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18883 wpalMemoryCopy(wdiGetStatsRsp + 1,
18884 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18885 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18886
18887 /*Notify UMAC*/
18888 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18889
18890 wpalMemoryFree(wdiGetStatsRsp);
18891
Jeff Johnsone7245742012-09-05 17:12:55 -070018892 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018893}/*WDI_ProcessGetStatsRsp*/
18894
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018895#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018896/**
18897 @brief Process Get Roam Rssi Rsp function (called when a response is
18898 being received over the bus from HAL)
18899
18900 @param pWDICtx: pointer to the WLAN DAL context
18901 pEventData: pointer to the event information structure
18902
18903 @see
18904 @return Result of the function call
18905*/
18906WDI_Status
18907WDI_ProcessGetRoamRssiRsp
18908(
18909 WDI_ControlBlockType* pWDICtx,
18910 WDI_EventInfoType* pEventData
18911)
18912{
18913 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18914 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18915 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18917
18918 /*-------------------------------------------------------------------------
18919 Sanity check
18920 -------------------------------------------------------------------------*/
18921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18922 ( NULL == pEventData->pEventData))
18923 {
18924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18925 "%s: Invalid parameters", __func__);
18926 WDI_ASSERT(0);
18927 return WDI_STATUS_E_FAILURE;
18928 }
18929
18930 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18931 if(NULL == wdiGetRoamRssiRspCb)
18932 {
18933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18934 "%s: call back function is NULL", __func__);
18935 WDI_ASSERT(0);
18936 return WDI_STATUS_E_FAILURE;
18937 }
18938
18939 /*-------------------------------------------------------------------------
18940 Extract response and send it to UMAC
18941 -------------------------------------------------------------------------*/
18942 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18943 pEventData->pEventData,
18944 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18945
18946 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18947 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18948 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18949
18950 /*Notify UMAC*/
18951 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18952
18953 return WDI_STATUS_SUCCESS;
18954}/*WDI_ProcessGetRoamRssiRsp*/
18955#endif
18956
Jeff Johnson295189b2012-06-20 16:38:30 -070018957
18958/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018959 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018960 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018961
18962 @param pWDICtx: pointer to the WLAN DAL context
18963 pEventData: pointer to the event information structure
18964
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 @see
18966 @return Result of the function call
18967*/
18968WDI_Status
18969WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018970(
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 WDI_ControlBlockType* pWDICtx,
18972 WDI_EventInfoType* pEventData
18973)
18974{
18975 WDI_Status wdiStatus;
18976 eHalStatus halStatus;
18977 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18979
18980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 -------------------------------------------------------------------------*/
18983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18984 ( NULL == pEventData->pEventData))
18985 {
18986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018990 }
18991
18992 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18993
18994 /*-------------------------------------------------------------------------
18995 Extract response and send it to UMAC
18996 -------------------------------------------------------------------------*/
18997 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018998 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018999
19000 /*Notify UMAC*/
19001 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19002
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019004}/*WDI_ProcessUpdateCfgRsp*/
19005
19006
19007
19008/**
19009 @brief Process Add BA Rsp function (called when a response
19010 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019011
19012 @param pWDICtx: pointer to the WLAN DAL context
19013 pEventData: pointer to the event information structure
19014
Jeff Johnson295189b2012-06-20 16:38:30 -070019015 @see
19016 @return Result of the function call
19017*/
19018WDI_Status
19019WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019020(
Jeff Johnson295189b2012-06-20 16:38:30 -070019021 WDI_ControlBlockType* pWDICtx,
19022 WDI_EventInfoType* pEventData
19023)
19024{
19025 WDI_AddBARspCb wdiAddBARspCb;
19026
19027 tAddBARspParams halAddBARsp;
19028 WDI_AddBARspinfoType wdiAddBARsp;
19029
19030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19031
19032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019034 -------------------------------------------------------------------------*/
19035 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19036 ( NULL == pEventData->pEventData))
19037 {
19038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 }
19043
19044 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19045
19046 /*-------------------------------------------------------------------------
19047 Extract response and send it to UMAC
19048 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019049 wpalMemoryCopy( &halAddBARsp,
19050 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019051 sizeof(halAddBARsp));
19052
19053 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19054
Jeff Johnson43971f52012-07-17 12:26:56 -070019055 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019056 {
19057 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19058 }
19059
19060 /*Notify UMAC*/
19061 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19062
Jeff Johnsone7245742012-09-05 17:12:55 -070019063 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019064}/*WDI_ProcessAddSessionBARsp*/
19065
19066/**
19067 @brief Process Add BA Rsp function (called when a response
19068 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019069
19070 @param pWDICtx: pointer to the WLAN DAL context
19071 pEventData: pointer to the event information structure
19072
Jeff Johnson295189b2012-06-20 16:38:30 -070019073 @see
19074 @return Result of the function call
19075*/
19076WDI_Status
19077WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019078(
Jeff Johnson295189b2012-06-20 16:38:30 -070019079 WDI_ControlBlockType* pWDICtx,
19080 WDI_EventInfoType* pEventData
19081)
19082{
19083 WDI_TriggerBARspCb wdiTriggerBARspCb;
19084
19085 tTriggerBARspParams* halTriggerBARsp;
19086 tTriggerBaRspCandidate* halBaCandidate;
19087 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19088 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19089 wpt_uint16 index;
19090 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019091 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19093
19094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019096 -------------------------------------------------------------------------*/
19097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19098 ( NULL == pEventData->pEventData))
19099 {
19100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 }
19105
19106 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19107
19108 /*-------------------------------------------------------------------------
19109 Extract response and send it to UMAC
19110 -------------------------------------------------------------------------*/
19111 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19112
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019113 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19114
19115 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19116 {
19117 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019118 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019119 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019120
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019121 if(NULL == wdiTriggerBARsp)
19122 {
19123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019124 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019125 pWDICtx, pEventData, pEventData->pEventData);
19126 WDI_ASSERT(0);
19127 return WDI_STATUS_E_FAILURE;
19128 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019129
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019130 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19131
Jeff Johnson295189b2012-06-20 16:38:30 -070019132 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019133 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019134 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19135
19136 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19137 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19138
19139 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19140 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019141 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019142 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19143 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19144 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019145 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019147 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019148 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19149 }
19150 wdiTriggerBARspCandidate++;
19151 halBaCandidate++;
19152 }
19153 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019154 else
19155 {
19156 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19157
19158 if(NULL == wdiTriggerBARsp)
19159 {
19160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019161 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019162 pWDICtx, pEventData, pEventData->pEventData);
19163 WDI_ASSERT(0);
19164 return WDI_STATUS_E_FAILURE;
19165 }
19166
19167 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19168
19169 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019170
19171 /*Notify UMAC*/
19172 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19173
19174 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019175 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019176}/*WDI_ProcessAddSessionBARsp*/
19177
19178/**
19179 @brief Process Update Beacon Params Rsp function (called when a response
19180 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019181
19182 @param pWDICtx: pointer to the WLAN DAL context
19183 pEventData: pointer to the event information structure
19184
Jeff Johnson295189b2012-06-20 16:38:30 -070019185 @see
19186 @return Result of the function call
19187*/
19188WDI_Status
19189WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019190(
Jeff Johnson295189b2012-06-20 16:38:30 -070019191 WDI_ControlBlockType* pWDICtx,
19192 WDI_EventInfoType* pEventData
19193)
19194{
19195 WDI_Status wdiStatus;
19196 eHalStatus halStatus;
19197 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19199
19200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019202 -------------------------------------------------------------------------*/
19203 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19204 ( NULL == pEventData->pEventData))
19205 {
19206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019210 }
19211
19212 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19213
19214 /*-------------------------------------------------------------------------
19215 Extract response and send it to UMAC
19216 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019217 wpalMemoryCopy( &halStatus,
19218 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 sizeof(halStatus));
19220
Jeff Johnsone7245742012-09-05 17:12:55 -070019221 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019222
19223 /*Notify UMAC*/
19224 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19225
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019227}/*WDI_ProcessUpdateBeaconParamsRsp*/
19228
19229/**
19230 @brief Process Send Beacon template Rsp function (called when a response
19231 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019232
19233 @param pWDICtx: pointer to the WLAN DAL context
19234 pEventData: pointer to the event information structure
19235
Jeff Johnson295189b2012-06-20 16:38:30 -070019236 @see
19237 @return Result of the function call
19238*/
19239WDI_Status
19240WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019241(
Jeff Johnson295189b2012-06-20 16:38:30 -070019242 WDI_ControlBlockType* pWDICtx,
19243 WDI_EventInfoType* pEventData
19244)
19245{
19246 WDI_Status wdiStatus;
19247 eHalStatus halStatus;
19248 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19250
19251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019253 -------------------------------------------------------------------------*/
19254 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19255 ( NULL == pEventData->pEventData))
19256 {
19257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019261 }
19262
19263 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19264
19265 /*-------------------------------------------------------------------------
19266 Extract response and send it to UMAC
19267 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019268 wpalMemoryCopy( &halStatus,
19269 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019270 sizeof(halStatus));
19271
Jeff Johnsone7245742012-09-05 17:12:55 -070019272 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019273
19274 /*Notify UMAC*/
19275 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19276
Jeff Johnsone7245742012-09-05 17:12:55 -070019277 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019278}/*WDI_ProcessSendBeaconParamsRsp*/
19279
Jeff Johnsone7245742012-09-05 17:12:55 -070019280
Jeff Johnson295189b2012-06-20 16:38:30 -070019281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019284
19285 @param pWDICtx: pointer to the WLAN DAL context
19286 pEventData: pointer to the event information structure
19287
Jeff Johnson295189b2012-06-20 16:38:30 -070019288 @see
19289 @return Result of the function call
19290*/
19291WDI_Status
19292WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019293(
Jeff Johnson295189b2012-06-20 16:38:30 -070019294 WDI_ControlBlockType* pWDICtx,
19295 WDI_EventInfoType* pEventData
19296)
19297{
19298 WDI_Status wdiStatus;
19299 eHalStatus halStatus;
19300 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19302
19303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019305 -------------------------------------------------------------------------*/
19306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19307 ( NULL == pEventData->pEventData))
19308 {
19309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019313 }
19314
19315 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19316
19317 /*-------------------------------------------------------------------------
19318 Extract response and send it to UMAC
19319 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019320 wpalMemoryCopy( &halStatus,
19321 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019322 sizeof(halStatus));
19323
Jeff Johnsone7245742012-09-05 17:12:55 -070019324 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019325
19326 /*Notify UMAC*/
19327 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19328
Jeff Johnsone7245742012-09-05 17:12:55 -070019329 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019330}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19331
19332 /**
19333 @brief Process Set Max Tx Power Rsp function (called when a response
19334 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019335
19336 @param pWDICtx: pointer to the WLAN DAL context
19337 pEventData: pointer to the event information structure
19338
Jeff Johnson295189b2012-06-20 16:38:30 -070019339 @see
19340 @return Result of the function call
19341*/
19342WDI_Status
19343WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019344(
Jeff Johnson295189b2012-06-20 16:38:30 -070019345 WDI_ControlBlockType* pWDICtx,
19346 WDI_EventInfoType* pEventData
19347)
19348{
19349 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019350
Jeff Johnson295189b2012-06-20 16:38:30 -070019351 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019352
Jeff Johnson295189b2012-06-20 16:38:30 -070019353 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19355
19356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 -------------------------------------------------------------------------*/
19359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19360 ( NULL == pEventData->pEventData))
19361 {
19362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 }
19367
19368 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19369
19370 /*-------------------------------------------------------------------------
19371 Extract response and send it to UMAC
19372 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019373 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19374 pEventData->pEventData,
19375 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019376
19377 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19378 {
19379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19380 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 }
19383
Jeff Johnsone7245742012-09-05 17:12:55 -070019384 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019386 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019387
19388 /*Notify UMAC*/
19389 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19390
Jeff Johnsone7245742012-09-05 17:12:55 -070019391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019392}
19393
schang86c22c42013-03-13 18:41:24 -070019394 /**
19395 @brief Process Set Tx Power Rsp function (called when a response
19396 is being received over the bus from HAL)
19397
19398 @param pWDICtx: pointer to the WLAN DAL context
19399 pEventData: pointer to the event information structure
19400
19401 @see
19402 @return Result of the function call
19403*/
19404WDI_Status
19405WDI_ProcessSetTxPowerRsp
19406(
19407 WDI_ControlBlockType* pWDICtx,
19408 WDI_EventInfoType* pEventData
19409)
19410{
19411 tSetTxPwrRspMsg halTxpowerrsp;
19412 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19413 WDA_SetTxPowerRspCb wdiReqStatusCb;
19414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19415
19416 /*-------------------------------------------------------------------------
19417 Sanity check
19418 -------------------------------------------------------------------------*/
19419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19420 ( NULL == pEventData->pEventData))
19421 {
19422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19423 "%s: Invalid parameters", __func__);
19424 WDI_ASSERT(0);
19425 return WDI_STATUS_E_FAILURE;
19426 }
19427
19428 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19429
19430 /*-------------------------------------------------------------------------
19431 Extract response and send it to UMAC
19432 -------------------------------------------------------------------------*/
19433 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19434 pEventData->pEventData,
19435 sizeof(halTxpowerrsp.setTxPwrRspParams));
19436
19437 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19438 {
19439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19440 "Error status returned in Set Tx Power Response ");
19441 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19442 return WDI_STATUS_E_FAILURE;
19443 }
19444
19445 wdiSetTxPowerRspMsg.wdiStatus =
19446 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19447
19448 /*Notify UMAC*/
19449 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19450
19451 return WDI_STATUS_SUCCESS;
19452}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019453
19454/**
19455 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19456 is being received over the bus from HAL)
19457
19458 @param pWDICtx: pointer to the WLAN DAL context
19459 pEventData: pointer to the event information structure
19460
19461 @see
19462 @return Result of the function call
19463*/
19464WDI_Status
19465WDI_ProcessSetMaxTxPowerPerBandRsp
19466(
19467 WDI_ControlBlockType* pWDICtx,
19468 WDI_EventInfoType* pEventData
19469)
19470{
19471 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19472 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19473 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19475
19476 /*-------------------------------------------------------------------------
19477 Sanity check
19478 -------------------------------------------------------------------------*/
19479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19480 ( NULL == pEventData->pEventData))
19481 {
19482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19483 "%s: Invalid parameters", __func__);
19484 WDI_ASSERT(0);
19485 return WDI_STATUS_E_FAILURE;
19486 }
19487
19488 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19489
19490 /*-------------------------------------------------------------------------
19491 Extract response and send it to UMAC
19492 -------------------------------------------------------------------------*/
19493 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19494 pEventData->pEventData,
19495 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19496
19497 if (eHAL_STATUS_SUCCESS !=
19498 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19499 {
19500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19501 "Error status returned in Set Max Tx Power Per Band Response");
19502 return WDI_STATUS_E_FAILURE;
19503 }
19504
19505 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19506 WDI_HAL_2_WDI_STATUS(
19507 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19508
19509 /* Notify UMAC */
19510 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19511
19512 return WDI_STATUS_SUCCESS;
19513}
19514
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019515#ifdef FEATURE_WLAN_TDLS
19516/**
19517 @brief Process TDLS Link Establish Rsp function (called
19518 when a response is being received over the bus from HAL)
19519
19520 @param pWDICtx: pointer to the WLAN DAL context
19521 pEventData: pointer to the event information structure
19522
19523 @see
19524 @return Result of the function call
19525*/
19526WDI_Status
19527WDI_ProcessLinkEstablishReqRsp
19528(
19529 WDI_ControlBlockType* pWDICtx,
19530 WDI_EventInfoType* pEventData
19531)
19532{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019533 eHalStatus halStatus;
19534 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019535 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19536 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19537
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19539
19540 /*-------------------------------------------------------------------------
19541 Sanity check
19542 -------------------------------------------------------------------------*/
19543 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19544 ( NULL == pEventData->pEventData))
19545 {
19546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19547 "%s: Invalid parameters", __func__);
19548 WDI_ASSERT(0);
19549 return WDI_STATUS_E_FAILURE;
19550 }
19551
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019552 /*-------------------------------------------------------------------------
19553 Extract indication and send it to UMAC
19554 -------------------------------------------------------------------------*/
19555 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19556 pEventData->pEventData,
19557 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19558
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019559 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19560
19561 /*-------------------------------------------------------------------------
19562 Extract response and send it to UMAC
19563 -------------------------------------------------------------------------*/
19564 wpalMemoryCopy( &halStatus,
19565 pEventData->pEventData,
19566 sizeof(halStatus));
19567
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019568 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19569 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019570
19571 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019572 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019573
19574 return WDI_STATUS_SUCCESS;
19575}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019576
19577
19578
19579/**
19580 @brief Process TDLS Chan switch Rsp function (called
19581 when a response is being received over the bus from HAL)
19582
19583 @param pWDICtx: pointer to the WLAN DAL context
19584 pEventData: pointer to the event information structure
19585
19586 @see
19587 @return Result of the function call
19588*/
19589WDI_Status
19590WDI_ProcessChanSwitchReqRsp
19591(
19592 WDI_ControlBlockType* pWDICtx,
19593 WDI_EventInfoType* pEventData
19594)
19595{
19596 eHalStatus halStatus;
19597 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19598 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19599 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19600
19601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19602
19603 /*-------------------------------------------------------------------------
19604 Sanity check
19605 -------------------------------------------------------------------------*/
19606 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19607 ( NULL == pEventData->pEventData))
19608 {
19609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19610 "%s: Invalid parameters", __func__);
19611 WDI_ASSERT(0);
19612 return WDI_STATUS_E_FAILURE;
19613 }
19614
19615 /*-------------------------------------------------------------------------
19616 Extract indication and send it to UMAC
19617 -------------------------------------------------------------------------*/
19618 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19619 pEventData->pEventData,
19620 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19621
19622 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19623
19624 /*-------------------------------------------------------------------------
19625 Extract response and send it to UMAC
19626 -------------------------------------------------------------------------*/
19627 wpalMemoryCopy( &halStatus,
19628 pEventData->pEventData,
19629 sizeof(halStatus));
19630
19631 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19632 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19633
19634 /*Notify UMAC*/
19635 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19636
19637 return WDI_STATUS_SUCCESS;
19638}/*WDI_ProcessChanSwitchReqRsp*/
19639
19640
19641
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019642#endif
schang86c22c42013-03-13 18:41:24 -070019643
Jeff Johnson295189b2012-06-20 16:38:30 -070019644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019645 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019646 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019647
19648 @param pWDICtx: pointer to the WLAN DAL context
19649 pEventData: pointer to the event information structure
19650
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 @see
19652 @return Result of the function call
19653*/
19654WDI_Status
19655WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019656(
Jeff Johnson295189b2012-06-20 16:38:30 -070019657 WDI_ControlBlockType* pWDICtx,
19658 WDI_EventInfoType* pEventData
19659)
19660{
19661 WDI_Status wdiStatus;
19662 eHalStatus halStatus;
19663 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19665
19666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019668 -------------------------------------------------------------------------*/
19669 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19670 ( NULL == pEventData->pEventData))
19671 {
19672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 }
19677
19678 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19679
19680 /*-------------------------------------------------------------------------
19681 Extract response and send it to UMAC
19682 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019683 wpalMemoryCopy( &halStatus,
19684 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019685 sizeof(halStatus));
19686
Jeff Johnsone7245742012-09-05 17:12:55 -070019687 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019688
19689 /*Notify UMAC*/
19690 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19691
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019693}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019695 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019696 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019697
19698 @param pWDICtx: pointer to the WLAN DAL context
19699 pEventData: pointer to the event information structure
19700
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 @see
19702 @return Result of the function call
19703*/
19704WDI_Status
19705WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019706(
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 WDI_ControlBlockType* pWDICtx,
19708 WDI_EventInfoType* pEventData
19709)
19710{
19711 WDI_Status wdiStatus;
19712 eHalStatus halStatus;
19713 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019714 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19716
19717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 -------------------------------------------------------------------------*/
19720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19721 ( NULL == pEventData->pEventData))
19722 {
19723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019727 }
19728
19729 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19730
19731 /*-------------------------------------------------------------------------
19732 Extract response and send it to UMAC
19733 -------------------------------------------------------------------------*/
19734 halStatus = *((eHalStatus*)pEventData->pEventData);
19735
Jeff Johnsone7245742012-09-05 17:12:55 -070019736 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019737
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019738 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19739 * Other module states are taken care by PMC.
19740 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19741 */
19742 if (wdiStatus != WDI_STATUS_SUCCESS) {
19743
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19745 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19746 halStatus);
19747 /* Call Back is not required as we are putting the DXE in FULL
19748 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019749 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19750
19751 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019753 "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 -080019754 WDI_ASSERT(0);
19755 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019756 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019757 /*Notify UMAC*/
19758 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19759
Jeff Johnsone7245742012-09-05 17:12:55 -070019760 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019761}/*WDI_ProcessEnterImpsRsp*/
19762
19763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019764 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019766
19767 @param pWDICtx: pointer to the WLAN DAL context
19768 pEventData: pointer to the event information structure
19769
Jeff Johnson295189b2012-06-20 16:38:30 -070019770 @see
19771 @return Result of the function call
19772*/
19773WDI_Status
19774WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019775(
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 WDI_ControlBlockType* pWDICtx,
19777 WDI_EventInfoType* pEventData
19778)
19779{
19780 WDI_Status wdiStatus;
19781 eHalStatus halStatus;
19782 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019783 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19785
19786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019788 -------------------------------------------------------------------------*/
19789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19790 ( NULL == pEventData->pEventData))
19791 {
19792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 }
19797
19798 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19799
19800 /*-------------------------------------------------------------------------
19801 Extract response and send it to UMAC
19802 -------------------------------------------------------------------------*/
19803 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019804 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019805
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019806 if (halStatus != eHAL_STATUS_SUCCESS)
19807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19808 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19809
Jeff Johnson295189b2012-06-20 16:38:30 -070019810 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019811 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19812 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19813 {
19814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019815 "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 -080019816 WDI_ASSERT(0);
19817 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019818 /*Notify UMAC*/
19819 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19820
Jeff Johnsone7245742012-09-05 17:12:55 -070019821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019822}/*WDI_ProcessExitImpsRsp*/
19823
19824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019825 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019826 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019827
19828 @param pWDICtx: pointer to the WLAN DAL context
19829 pEventData: pointer to the event information structure
19830
Jeff Johnson295189b2012-06-20 16:38:30 -070019831 @see
19832 @return Result of the function call
19833*/
19834WDI_Status
19835WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019836(
Jeff Johnson295189b2012-06-20 16:38:30 -070019837 WDI_ControlBlockType* pWDICtx,
19838 WDI_EventInfoType* pEventData
19839)
19840{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019841 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19842 tHalEnterBmpsRspParams halEnterBmpsRsp;
19843 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19844 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019845 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19847
19848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 -------------------------------------------------------------------------*/
19851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19852 ( NULL == pEventData->pEventData))
19853 {
19854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019858 }
19859
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019861 Extract response and send it to UMAC
19862 -------------------------------------------------------------------------*/
19863 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19864 {
19865 wpalMemoryCopy( &halEnterBmpsRsp,
19866 pEventData->pEventData,
19867 sizeof(halEnterBmpsRsp));
19868
19869 //Used to print debug message
19870 halStatus = halEnterBmpsRsp.status;
19871 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19872 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19873 }
19874 else
19875 {
19876 halStatus = *((eHalStatus*)pEventData->pEventData);
19877 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19878 }
19879
19880 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019881
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019882 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19883 * Other module states are taken care by PMC.
19884 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19885 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019886 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19887 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019888
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019890 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19891 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019892 /* Call Back is not required as we are putting the DXE in FULL
19893 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019894 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19895 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19896 {
19897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019898 "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 -080019899 WDI_ASSERT(0);
19900 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019901 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019902 }
19903
Jeff Johnson295189b2012-06-20 16:38:30 -070019904 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019905 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019906
Jeff Johnsone7245742012-09-05 17:12:55 -070019907 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019908}/*WDI_ProcessEnterBmpsRsp*/
19909
19910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019911 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019912 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019913
19914 @param pWDICtx: pointer to the WLAN DAL context
19915 pEventData: pointer to the event information structure
19916
Jeff Johnson295189b2012-06-20 16:38:30 -070019917 @see
19918 @return Result of the function call
19919*/
19920WDI_Status
19921WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019922(
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 WDI_ControlBlockType* pWDICtx,
19924 WDI_EventInfoType* pEventData
19925)
19926{
Jeff Johnson295189b2012-06-20 16:38:30 -070019927 eHalStatus halStatus;
19928 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019929 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019930 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19931 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19933
19934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 -------------------------------------------------------------------------*/
19937 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19938 ( NULL == pEventData->pEventData))
19939 {
19940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 }
19945
19946 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19947
19948 /*-------------------------------------------------------------------------
19949 Extract response and send it to UMAC
19950 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019951
19952 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19953 {
19954 wpalMemoryCopy( &halExitBmpsRsp,
19955 pEventData->pEventData,
19956 sizeof(halExitBmpsRsp));
19957
19958 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19959 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19960 }
19961 else
19962 {
19963 halStatus = *((eHalStatus*)pEventData->pEventData);
19964 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19965 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019966
19967 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019968 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19969 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19970 {
19971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019972 "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 -080019973 WDI_ASSERT(0);
19974 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19976
19977 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019978 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019979
Jeff Johnsone7245742012-09-05 17:12:55 -070019980 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019981}/*WDI_ProcessExitBmpsRsp*/
19982
19983/**
19984 @brief Process Enter UAPSD Rsp function (called when a response
19985 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019986
19987 @param pWDICtx: pointer to the WLAN DAL context
19988 pEventData: pointer to the event information structure
19989
Jeff Johnson295189b2012-06-20 16:38:30 -070019990 @see
19991 @return Result of the function call
19992*/
19993WDI_Status
19994WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019995(
Jeff Johnson295189b2012-06-20 16:38:30 -070019996 WDI_ControlBlockType* pWDICtx,
19997 WDI_EventInfoType* pEventData
19998)
19999{
Jeff Johnson295189b2012-06-20 16:38:30 -070020000 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020001 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020003 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20004
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20006
20007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 -------------------------------------------------------------------------*/
20010 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20011 ( NULL == pEventData->pEventData))
20012 {
20013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020017 }
20018
20019 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20020
20021 /*-------------------------------------------------------------------------
20022 Extract response and send it to UMAC
20023 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020024 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20025 {
20026 wpalMemoryCopy( &halEnterUapsdRsp,
20027 pEventData->pEventData,
20028 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020029
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020030 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20031 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20032 }
20033 else
20034 {
20035 halStatus = *((eHalStatus*)pEventData->pEventData);
20036 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20037 }
20038
20039 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020040 {
20041 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20042 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20043 // the traffic to decide when to suspend the trigger frames when there is no traffic
20044 // activity on the trigger enabled ACs
20045 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20046
20047#ifdef WLAN_PERF
20048 // Increment the BD signature to refresh the fast path BD utilization
20049 pWDICtx->uBdSigSerialNum++;
20050#endif
20051 }
20052
20053 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020054 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020055
Jeff Johnsone7245742012-09-05 17:12:55 -070020056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020057}/*WDI_ProcessEnterUapsdRsp*/
20058
20059/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020060 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020061 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020062
20063 @param pWDICtx: pointer to the WLAN DAL context
20064 pEventData: pointer to the event information structure
20065
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 @see
20067 @return Result of the function call
20068*/
20069WDI_Status
20070WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020071(
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 WDI_ControlBlockType* pWDICtx,
20073 WDI_EventInfoType* pEventData
20074)
20075{
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 eHalStatus halStatus;
20077 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020078 tHalExitUapsdRspParams halExitUapsdRsp;
20079 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20081
20082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 -------------------------------------------------------------------------*/
20085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20086 ( NULL == pEventData->pEventData))
20087 {
20088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 }
20093
20094 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20095
20096 /*-------------------------------------------------------------------------
20097 Extract response and send it to UMAC
20098 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020099 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20100 {
20101 wpalMemoryCopy( &halExitUapsdRsp,
20102 pEventData->pEventData,
20103 sizeof(halExitUapsdRsp));
20104
20105 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20106 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20107 }
20108 else
20109 {
20110 halStatus = *((eHalStatus*)pEventData->pEventData);
20111 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20112 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020113 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20114 // directly instead of the FW WQ.
20115 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20116
20117#ifdef WLAN_PERF
20118 // Increment the BD signature to refresh the fast path BD utilization
20119 pWDICtx->uBdSigSerialNum++;
20120#endif
20121
20122 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020123 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020124
Jeff Johnsone7245742012-09-05 17:12:55 -070020125 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020126}/*WDI_ProcessExitUapsdRsp*/
20127
20128/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020129 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020130 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020131
20132 @param pWDICtx: pointer to the WLAN DAL context
20133 pEventData: pointer to the event information structure
20134
Jeff Johnson295189b2012-06-20 16:38:30 -070020135 @see
20136 @return Result of the function call
20137*/
20138WDI_Status
20139WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020140(
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 WDI_ControlBlockType* pWDICtx,
20142 WDI_EventInfoType* pEventData
20143)
20144{
20145 WDI_Status wdiStatus;
20146 eHalStatus halStatus;
20147 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20149
20150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020152 -------------------------------------------------------------------------*/
20153 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20154 ( NULL == pEventData->pEventData))
20155 {
20156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020160 }
20161
20162 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20163
20164 /*-------------------------------------------------------------------------
20165 Extract response and send it to UMAC
20166 -------------------------------------------------------------------------*/
20167 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020168 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020169
20170 /*Notify UMAC*/
20171 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20172
Jeff Johnsone7245742012-09-05 17:12:55 -070020173 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020174}/*WDI_ProcessSetUapsdAcParamsRsp*/
20175
20176/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020177 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020178 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020179
20180 @param pWDICtx: pointer to the WLAN DAL context
20181 pEventData: pointer to the event information structure
20182
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 @see
20184 @return Result of the function call
20185*/
20186WDI_Status
20187WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020188(
Jeff Johnson295189b2012-06-20 16:38:30 -070020189 WDI_ControlBlockType* pWDICtx,
20190 WDI_EventInfoType* pEventData
20191)
20192{
20193 WDI_Status wdiStatus;
20194 eHalStatus halStatus;
20195 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20197
20198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020200 -------------------------------------------------------------------------*/
20201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20202 ( NULL == pEventData->pEventData))
20203 {
20204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020208 }
20209
20210 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20211
20212 /*-------------------------------------------------------------------------
20213 Extract response and send it to UMAC
20214 -------------------------------------------------------------------------*/
20215 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020216 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020217
20218 /*Notify UMAC*/
20219 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20220
Jeff Johnsone7245742012-09-05 17:12:55 -070020221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020222}/*WDI_ProcessUpdateUapsdParamsRsp*/
20223
20224/**
20225 @brief Process Configure RXP filter Rsp function (called when a
20226 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020227
20228 @param pWDICtx: pointer to the WLAN DAL context
20229 pEventData: pointer to the event information structure
20230
Jeff Johnson295189b2012-06-20 16:38:30 -070020231 @see
20232 @return Result of the function call
20233*/
20234WDI_Status
20235WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020236(
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 WDI_ControlBlockType* pWDICtx,
20238 WDI_EventInfoType* pEventData
20239)
20240{
20241 WDI_Status wdiStatus;
20242 eHalStatus halStatus;
20243 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20245
20246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020248 -------------------------------------------------------------------------*/
20249 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20250 ( NULL == pEventData->pEventData))
20251 {
20252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020253 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020254 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 }
20257
20258 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20259
20260 /*-------------------------------------------------------------------------
20261 Extract response and send it to UMAC
20262 -------------------------------------------------------------------------*/
20263 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020264 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020265
20266 /*Notify UMAC*/
20267 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20268
Jeff Johnsone7245742012-09-05 17:12:55 -070020269 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020270}/*WDI_ProcessConfigureRxpFilterRsp*/
20271
20272/**
20273 @brief Process Set beacon filter Rsp function (called when a
20274 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020275
20276 @param pWDICtx: pointer to the WLAN DAL context
20277 pEventData: pointer to the event information structure
20278
Jeff Johnson295189b2012-06-20 16:38:30 -070020279 @see
20280 @return Result of the function call
20281*/
20282WDI_Status
20283WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020284(
Jeff Johnson295189b2012-06-20 16:38:30 -070020285 WDI_ControlBlockType* pWDICtx,
20286 WDI_EventInfoType* pEventData
20287)
20288{
20289 WDI_Status wdiStatus;
20290 eHalStatus halStatus;
20291 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20293
20294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020296 -------------------------------------------------------------------------*/
20297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20298 ( NULL == pEventData->pEventData))
20299 {
20300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020304 }
20305
20306 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20307
20308 /*-------------------------------------------------------------------------
20309 Extract response and send it to UMAC
20310 -------------------------------------------------------------------------*/
20311 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020312 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020313
20314 /*Notify UMAC*/
20315 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20316
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020318}/*WDI_ProcessSetBeaconFilterRsp*/
20319
20320/**
20321 @brief Process remove beacon filter Rsp function (called when a
20322 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020323
20324 @param pWDICtx: pointer to the WLAN DAL context
20325 pEventData: pointer to the event information structure
20326
Jeff Johnson295189b2012-06-20 16:38:30 -070020327 @see
20328 @return Result of the function call
20329*/
20330WDI_Status
20331WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020332(
Jeff Johnson295189b2012-06-20 16:38:30 -070020333 WDI_ControlBlockType* pWDICtx,
20334 WDI_EventInfoType* pEventData
20335)
20336{
20337 WDI_Status wdiStatus;
20338 eHalStatus halStatus;
20339 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20341
20342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020344 -------------------------------------------------------------------------*/
20345 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20346 ( NULL == pEventData->pEventData))
20347 {
20348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020352 }
20353
20354 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20355
20356 /*-------------------------------------------------------------------------
20357 Extract response and send it to UMAC
20358 -------------------------------------------------------------------------*/
20359 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020360 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020361
20362 /*Notify UMAC*/
20363 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20364
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020366}/*WDI_ProcessRemBeaconFilterRsp*/
20367
20368/**
20369 @brief Process set RSSI thresholds Rsp function (called when a
20370 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020371
20372 @param pWDICtx: pointer to the WLAN DAL context
20373 pEventData: pointer to the event information structure
20374
Jeff Johnson295189b2012-06-20 16:38:30 -070020375 @see
20376 @return Result of the function call
20377*/
20378WDI_Status
20379WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020380(
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 WDI_ControlBlockType* pWDICtx,
20382 WDI_EventInfoType* pEventData
20383)
20384{
20385 WDI_Status wdiStatus;
20386 eHalStatus halStatus;
20387 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20389
20390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 -------------------------------------------------------------------------*/
20393 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20394 ( NULL == pEventData->pEventData))
20395 {
20396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 }
20401
20402 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20403
20404 /*-------------------------------------------------------------------------
20405 Extract response and send it to UMAC
20406 -------------------------------------------------------------------------*/
20407 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020408 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020409
20410 /*Notify UMAC*/
20411 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20412
Jeff Johnsone7245742012-09-05 17:12:55 -070020413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020414}/*WDI_ProcessSetRSSIThresoldsRsp*/
20415
20416/**
20417 @brief Process host offload Rsp function (called when a
20418 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020419
20420 @param pWDICtx: pointer to the WLAN DAL context
20421 pEventData: pointer to the event information structure
20422
Jeff Johnson295189b2012-06-20 16:38:30 -070020423 @see
20424 @return Result of the function call
20425*/
20426WDI_Status
20427WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020428(
Jeff Johnson295189b2012-06-20 16:38:30 -070020429 WDI_ControlBlockType* pWDICtx,
20430 WDI_EventInfoType* pEventData
20431)
20432{
20433 WDI_Status wdiStatus;
20434 eHalStatus halStatus;
20435 WDI_HostOffloadCb wdiHostOffloadCb;
20436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20437
20438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 -------------------------------------------------------------------------*/
20441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20442 ( NULL == pEventData->pEventData))
20443 {
20444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020448 }
20449
20450 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20451
20452 /*-------------------------------------------------------------------------
20453 Extract response and send it to UMAC
20454 -------------------------------------------------------------------------*/
20455 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020456 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020457
20458 /*Notify UMAC*/
20459 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20460
Jeff Johnsone7245742012-09-05 17:12:55 -070020461 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020462}/*WDI_ProcessHostOffloadRsp*/
20463
20464/**
20465 @brief Process keep alive Rsp function (called when a
20466 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020467
20468 @param pWDICtx: pointer to the WLAN DAL context
20469 pEventData: pointer to the event information structure
20470
Jeff Johnson295189b2012-06-20 16:38:30 -070020471 @see
20472 @return Result of the function call
20473*/
20474WDI_Status
20475WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020476(
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 WDI_ControlBlockType* pWDICtx,
20478 WDI_EventInfoType* pEventData
20479)
20480{
20481 WDI_Status wdiStatus;
20482 eHalStatus halStatus;
20483 WDI_KeepAliveCb wdiKeepAliveCb;
20484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20486 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20487
20488
20489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020491 -------------------------------------------------------------------------*/
20492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20493 ( NULL == pEventData->pEventData))
20494 {
20495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 }
20500
Jeff Johnsone7245742012-09-05 17:12:55 -070020501 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20502
Jeff Johnson295189b2012-06-20 16:38:30 -070020503 /*-------------------------------------------------------------------------
20504 Extract response and send it to UMAC
20505 -------------------------------------------------------------------------*/
20506 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020507 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020508
20509 /*Notify UMAC*/
20510 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20511
Jeff Johnsone7245742012-09-05 17:12:55 -070020512 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020513}/*WDI_ProcessKeepAliveRsp*/
20514
20515/**
20516 @brief Process wowl add ptrn Rsp function (called when a
20517 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020518
20519 @param pWDICtx: pointer to the WLAN DAL context
20520 pEventData: pointer to the event information structure
20521
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 @see
20523 @return Result of the function call
20524*/
20525WDI_Status
20526WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020527(
Jeff Johnson295189b2012-06-20 16:38:30 -070020528 WDI_ControlBlockType* pWDICtx,
20529 WDI_EventInfoType* pEventData
20530)
20531{
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 eHalStatus halStatus;
20533 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020534 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20535 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20536
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20538
20539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 -------------------------------------------------------------------------*/
20542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20543 ( NULL == pEventData->pEventData))
20544 {
20545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020549 }
20550
20551 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20552
20553 /*-------------------------------------------------------------------------
20554 Extract response and send it to UMAC
20555 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020556 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20557 {
20558 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20559 pEventData->pEventData,
20560 sizeof(halAddWowlBcastPtrRsp));
20561
20562 wdiWowlAddBcPtrRsp.wdiStatus =
20563 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20564 }
20565 else
20566 {
20567 halStatus = *((eHalStatus*)pEventData->pEventData);
20568 wdiWowlAddBcPtrRsp.wdiStatus =
20569 WDI_HAL_2_WDI_STATUS(halStatus);
20570 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020571
20572 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020573 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020574
Jeff Johnsone7245742012-09-05 17:12:55 -070020575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020576}/*WDI_ProcessWowlAddBcPtrnRsp*/
20577
20578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020579 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020581
20582 @param pWDICtx: pointer to the WLAN DAL context
20583 pEventData: pointer to the event information structure
20584
Jeff Johnson295189b2012-06-20 16:38:30 -070020585 @see
20586 @return Result of the function call
20587*/
20588WDI_Status
20589WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020590(
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 WDI_ControlBlockType* pWDICtx,
20592 WDI_EventInfoType* pEventData
20593)
20594{
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 eHalStatus halStatus;
20596 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020597 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20598 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20600
20601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020603 -------------------------------------------------------------------------*/
20604 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20605 ( NULL == pEventData->pEventData))
20606 {
20607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 }
20612
20613 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20614
20615 /*-------------------------------------------------------------------------
20616 Extract response and send it to UMAC
20617 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020618 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20619 {
20620 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20621 pEventData->pEventData,
20622 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020623
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020624 wdiWowlDelBcstPtrRsp.wdiStatus =
20625 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20626 }
20627 else
20628 {
20629 halStatus = *((eHalStatus*)pEventData->pEventData);
20630 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20631 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020632 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020633 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020634
Jeff Johnsone7245742012-09-05 17:12:55 -070020635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020636}/*WDI_ProcessWowlDelBcPtrnRsp*/
20637
20638/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020639 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020640 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020641
20642 @param pWDICtx: pointer to the WLAN DAL context
20643 pEventData: pointer to the event information structure
20644
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 @see
20646 @return Result of the function call
20647*/
20648WDI_Status
20649WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020650(
Jeff Johnson295189b2012-06-20 16:38:30 -070020651 WDI_ControlBlockType* pWDICtx,
20652 WDI_EventInfoType* pEventData
20653)
20654{
Jeff Johnson295189b2012-06-20 16:38:30 -070020655 eHalStatus halStatus;
20656 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020657 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20658 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20660
20661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020663 -------------------------------------------------------------------------*/
20664 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20665 ( NULL == pEventData->pEventData))
20666 {
20667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 }
20672
20673 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20674
20675 /*-------------------------------------------------------------------------
20676 Extract response and send it to UMAC
20677 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020678 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20679 {
20680 wpalMemoryCopy( &halEnterWowlRspParams,
20681 (wpt_uint8*)pEventData->pEventData,
20682 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020683
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020684 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20685 wdiwowlEnterRsp.status =
20686 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20687 }
20688 else
20689 {
20690 halStatus = *((eHalStatus*)pEventData->pEventData);
20691 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20692 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020694 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020695
Jeff Johnsone7245742012-09-05 17:12:55 -070020696 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020697}/*WDI_ProcessWowlEnterRsp*/
20698
20699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020700 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020702
20703 @param pWDICtx: pointer to the WLAN DAL context
20704 pEventData: pointer to the event information structure
20705
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 @see
20707 @return Result of the function call
20708*/
20709WDI_Status
20710WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020711(
Jeff Johnson295189b2012-06-20 16:38:30 -070020712 WDI_ControlBlockType* pWDICtx,
20713 WDI_EventInfoType* pEventData
20714)
20715{
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 eHalStatus halStatus;
20717 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020718 tHalExitWowlRspParams halExitWowlRspParams;
20719 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20720
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20722
20723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 -------------------------------------------------------------------------*/
20726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20727 ( NULL == pEventData->pEventData))
20728 {
20729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 }
20734
20735 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20736
20737 /*-------------------------------------------------------------------------
20738 Extract response and send it to UMAC
20739 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020740 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20741 {
20742 wpalMemoryCopy( &halExitWowlRspParams,
20743 pEventData->pEventData,
20744 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020745
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020746 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20747 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20748
20749 }
20750 else
20751 {
20752 halStatus = *((eHalStatus*)pEventData->pEventData);
20753 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20754 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020756 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020757
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020759}/*WDI_ProcessWowlExitRsp*/
20760
20761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020762 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020763 (called when a response is being received over the bus
20764 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020765
20766 @param pWDICtx: pointer to the WLAN DAL context
20767 pEventData: pointer to the event information structure
20768
Jeff Johnson295189b2012-06-20 16:38:30 -070020769 @see
20770 @return Result of the function call
20771*/
20772WDI_Status
20773WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020774(
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 WDI_ControlBlockType* pWDICtx,
20776 WDI_EventInfoType* pEventData
20777)
20778{
20779 WDI_Status wdiStatus;
20780 eHalStatus halStatus;
20781 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20783
20784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 -------------------------------------------------------------------------*/
20787 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20788 ( NULL == pEventData->pEventData))
20789 {
20790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020794 }
20795
20796 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20797
20798 /*-------------------------------------------------------------------------
20799 Extract response and send it to UMAC
20800 -------------------------------------------------------------------------*/
20801 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020802 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020803
20804 /*Notify UMAC*/
20805 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20806
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020808}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20809
20810
20811/**
20812 @brief Process Nv download(called when a response
20813 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020814
20815 @param pWDICtx: pointer to the WLAN DAL context
20816 pEventData: pointer to the event information structure
20817
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 @see
20819 @return Result of the function call
20820*/
20821WDI_Status
20822WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020823(
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 WDI_ControlBlockType* pWDICtx,
20825 WDI_EventInfoType* pEventData
20826)
20827{
20828
20829 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20830 tHalNvImgDownloadRspParams halNvDownloadRsp;
20831 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20832
20833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 -------------------------------------------------------------------------*/
20836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20837 ( NULL == pEventData->pEventData))
20838 {
20839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 }
20844
20845 /*-------------------------------------------------------------------------
20846 Extract response and send it to UMAC
20847 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020848 wpalMemoryCopy( &halNvDownloadRsp,
20849 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020850 sizeof(halNvDownloadRsp));
20851
20852 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20853
20854 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020855 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20856 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020857 {
20858 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 }
20861 else
20862 {
20863 /*Reset the Nv related global information in WDI context information */
20864 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20865 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20866 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20867 /*call WDA callback function for last fragment */
20868 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20869 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20870 }
20871
Jeff Johnsone7245742012-09-05 17:12:55 -070020872 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020873}
20874#ifdef WLAN_FEATURE_VOWIFI_11R
20875/**
20876 @brief Process Add TSpec Rsp function (called when a response
20877 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020878
20879 @param pWDICtx: pointer to the WLAN DAL context
20880 pEventData: pointer to the event information structure
20881
Jeff Johnson295189b2012-06-20 16:38:30 -070020882 @see
20883 @return Result of the function call
20884*/
20885WDI_Status
20886WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020887(
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 WDI_ControlBlockType* pWDICtx,
20889 WDI_EventInfoType* pEventData
20890)
20891{
20892 WDI_Status wdiStatus;
20893 tAggrAddTsRspParams aggrAddTsRsp;
20894 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20896
20897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020899 -------------------------------------------------------------------------*/
20900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20901 ( NULL == pEventData->pEventData))
20902 {
20903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020907 }
20908
20909 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20910
20911 /*-------------------------------------------------------------------------
20912 Extract response and send it to UMAC
20913 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020914 wpalMemoryCopy( &aggrAddTsRsp,
20915 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020916 sizeof(aggrAddTsRsp));
20917
20918 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020920
20921 /*Notify UMAC*/
20922 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20923
Jeff Johnsone7245742012-09-05 17:12:55 -070020924 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020925}/*WDI_ProcessAddTSpecRsp*/
20926#endif /* WLAN_FEATURE_VOWIFI_11R */
20927
20928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020931
20932 @param pWDICtx: pointer to the WLAN DAL context
20933 pEventData: pointer to the event information structure
20934
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 @see
20936 @return Result of the function call
20937*/
20938WDI_Status
20939WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020940(
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 WDI_ControlBlockType* pWDICtx,
20942 WDI_EventInfoType* pEventData
20943)
20944{
20945 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20946 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20947 tHalHostResumeRspParams hostResumeRspMsg;
20948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20949
20950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020952 -------------------------------------------------------------------------*/
20953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20954 ( NULL == pEventData->pEventData))
20955 {
20956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020960 }
20961
20962 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20963
20964 /*-------------------------------------------------------------------------
20965 Extract response and send it to UMAC
20966 -------------------------------------------------------------------------*/
20967
Jeff Johnsone7245742012-09-05 17:12:55 -070020968 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 (wpt_uint8*)pEventData->pEventData,
20970 sizeof(hostResumeRspMsg));
20971
Jeff Johnsone7245742012-09-05 17:12:55 -070020972 wdiResumeRspParams.wdiStatus =
20973 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020974
20975 /*Notify UMAC*/
20976 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20977
20978 return WDI_STATUS_SUCCESS;
20979}
20980
20981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020982 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020983 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020984
20985 @param pWDICtx: pointer to the WLAN DAL context
20986 pEventData: pointer to the event information structure
20987
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 @see
20989 @return Result of the function call
20990*/
20991WDI_Status
20992WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020993(
Jeff Johnson295189b2012-06-20 16:38:30 -070020994 WDI_ControlBlockType* pWDICtx,
20995 WDI_EventInfoType* pEventData
20996)
20997{
20998 WDI_Status wdiStatus;
20999 eHalStatus halStatus;
21000 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21002
21003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021004 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 -------------------------------------------------------------------------*/
21006 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21007 ( NULL == pEventData->pEventData))
21008 {
21009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021013 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021014
21015 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021016
21017 /*-------------------------------------------------------------------------
21018 Extract response and send it to UMAC
21019 -------------------------------------------------------------------------*/
21020 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021021 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021022
21023 /*Notify UMAC*/
21024 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21025
Jeff Johnsone7245742012-09-05 17:12:55 -070021026 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021027}/*WDI_ProcessSetTxPerTrackingRsp*/
21028
21029/*==========================================================================
21030 Indications from HAL
21031 ==========================================================================*/
21032/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021033 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021034 indication of this kind is being received over the bus
21035 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021036
21037 @param pWDICtx: pointer to the WLAN DAL context
21038 pEventData: pointer to the event information structure
21039
Jeff Johnson295189b2012-06-20 16:38:30 -070021040 @see
21041 @return Result of the function call
21042*/
21043WDI_Status
21044WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021045(
Jeff Johnson295189b2012-06-20 16:38:30 -070021046 WDI_ControlBlockType* pWDICtx,
21047 WDI_EventInfoType* pEventData
21048)
21049{
21050 WDI_LowLevelIndType wdiInd;
21051 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21053
21054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021056 -------------------------------------------------------------------------*/
21057 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21058 ( NULL == pEventData->pEventData))
21059 {
21060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021064 }
21065
21066 /*-------------------------------------------------------------------------
21067 Extract indication and send it to UMAC
21068 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21070 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021071 sizeof(tHalRSSINotification));
21072
21073 /*Fill in the indication parameters*/
21074 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21075 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21076 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21077 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21078 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21079 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21080 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21081 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21082 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21083 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21084 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21085 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21086 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021087 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21088 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021089
ltimariub77f24b2013-01-24 18:54:33 -080021090 if ( pWDICtx->wdiLowLevelIndCB )
21091 {
21092 /*Notify UMAC of indication*/
21093 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21094 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021095
21096 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021097}/*WDI_ProcessLowRSSIInd*/
21098
21099
21100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021101 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021102 an indication of this kind is being received over the
21103 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021104
21105 @param pWDICtx: pointer to the WLAN DAL context
21106 pEventData: pointer to the event information structure
21107
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 @see
21109 @return Result of the function call
21110*/
21111WDI_Status
21112WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021113(
Jeff Johnson295189b2012-06-20 16:38:30 -070021114 WDI_ControlBlockType* pWDICtx,
21115 WDI_EventInfoType* pEventData
21116)
21117{
21118 WDI_Status wdiStatus;
21119 eHalStatus halStatus;
21120 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021121 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21123
21124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 -------------------------------------------------------------------------*/
21127 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21128 ( NULL == pEventData->pEventData))
21129 {
21130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021131 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021132 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021135 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021136 /*-------------------------------------------------------------------------
21137 Extract indication and send it to UMAC
21138 -------------------------------------------------------------------------*/
21139 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21140 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021141 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021142
21143 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021144 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021145 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21146 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021147 if ( pWDICtx->wdiLowLevelIndCB )
21148 {
21149 /*Notify UMAC*/
21150 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21151 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021152
21153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021154}/*WDI_ProcessMissedBeaconInd*/
21155
21156
21157/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021158 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021159 an indication of this kind is being received over the
21160 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021161
21162 @param pWDICtx: pointer to the WLAN DAL context
21163 pEventData: pointer to the event information structure
21164
Jeff Johnson295189b2012-06-20 16:38:30 -070021165 @see
21166 @return Result of the function call
21167*/
21168WDI_Status
21169WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021170(
Jeff Johnson295189b2012-06-20 16:38:30 -070021171 WDI_ControlBlockType* pWDICtx,
21172 WDI_EventInfoType* pEventData
21173)
21174{
21175 WDI_Status wdiStatus;
21176 eHalStatus halStatus;
21177 WDI_LowLevelIndType wdiInd;
21178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21179
21180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 -------------------------------------------------------------------------*/
21183 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21184 ( NULL == pEventData->pEventData))
21185 {
21186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021190 }
21191
21192 /*-------------------------------------------------------------------------
21193 Extract indication and send it to UMAC
21194 -------------------------------------------------------------------------*/
21195 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21196 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021197 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021198
21199 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021200 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 /* ! TO DO - fill in from HAL struct:
21202 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21203
ltimariub77f24b2013-01-24 18:54:33 -080021204 if ( pWDICtx->wdiLowLevelIndCB )
21205 {
21206 /*Notify UMAC*/
21207 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21208 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021209
21210 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021211}/*WDI_ProcessUnkAddrFrameInd*/
21212
21213
21214/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021215 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021216 indication of this kind is being received over the bus
21217 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021218
21219 @param pWDICtx: pointer to the WLAN DAL context
21220 pEventData: pointer to the event information structure
21221
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 @see
21223 @return Result of the function call
21224*/
21225WDI_Status
21226WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021227(
Jeff Johnson295189b2012-06-20 16:38:30 -070021228 WDI_ControlBlockType* pWDICtx,
21229 WDI_EventInfoType* pEventData
21230)
21231{
21232 WDI_LowLevelIndType wdiInd;
21233 tpSirMicFailureInd pHalMicFailureInd;
21234
21235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21236
21237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021239 -------------------------------------------------------------------------*/
21240 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21241 ( NULL == pEventData->pEventData))
21242 {
21243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021244 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021247 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021248
Jeff Johnson295189b2012-06-20 16:38:30 -070021249 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21250 /*-------------------------------------------------------------------------
21251 Extract indication and send it to UMAC
21252 -------------------------------------------------------------------------*/
21253
21254 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021255 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021256 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21257 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21258 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21259 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21260 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21261 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21262 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21263 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021264 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021265 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021266 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021267 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021268 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021269 pHalMicFailureInd->info.keyId;
21270 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21271 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21272 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21273 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021274
21275 if ( pWDICtx->wdiLowLevelIndCB )
21276 {
21277 /*Notify UMAC*/
21278 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21279 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021280
21281 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021282}/*WDI_ProcessMicFailureInd*/
21283
21284
21285/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021286 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021287 an indication of this kind is being received over the
21288 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021289
21290 @param pWDICtx: pointer to the WLAN DAL context
21291 pEventData: pointer to the event information structure
21292
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 @see
21294 @return Result of the function call
21295*/
21296WDI_Status
21297WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021298(
Jeff Johnson295189b2012-06-20 16:38:30 -070021299 WDI_ControlBlockType* pWDICtx,
21300 WDI_EventInfoType* pEventData
21301)
21302{
21303 WDI_Status wdiStatus;
21304 eHalStatus halStatus;
21305 WDI_LowLevelIndType wdiInd;
21306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21307
21308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021310 -------------------------------------------------------------------------*/
21311 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21312 ( NULL == pEventData->pEventData))
21313 {
21314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021318 }
21319
21320 /*-------------------------------------------------------------------------
21321 Extract indication and send it to UMAC
21322 -------------------------------------------------------------------------*/
21323
21324 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21325 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021326 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021327
21328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21329 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021330
Jeff Johnson295189b2012-06-20 16:38:30 -070021331 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021332 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21333 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021334
ltimariub77f24b2013-01-24 18:54:33 -080021335 if ( pWDICtx->wdiLowLevelIndCB )
21336 {
21337 /*Notify UMAC*/
21338 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21339 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021340
21341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021342}/*WDI_ProcessFatalErrorInd*/
21343
21344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021345 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 an indication of this kind is being received over the
21347 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021348
21349 @param pWDICtx: pointer to the WLAN DAL context
21350 pEventData: pointer to the event information structure
21351
Jeff Johnson295189b2012-06-20 16:38:30 -070021352 @see
21353 @return Result of the function call
21354*/
21355WDI_Status
21356WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021357(
Jeff Johnson295189b2012-06-20 16:38:30 -070021358 WDI_ControlBlockType* pWDICtx,
21359 WDI_EventInfoType* pEventData
21360)
21361{
21362 tDeleteStaContextParams halDelSTACtx;
21363 WDI_LowLevelIndType wdiInd;
21364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21365
21366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021368 -------------------------------------------------------------------------*/
21369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21370 ( NULL == pEventData->pEventData))
21371 {
21372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021376 }
21377
21378 /*-------------------------------------------------------------------------
21379 Extract indication and send it to UMAC
21380 -------------------------------------------------------------------------*/
21381
21382 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021383 wpalMemoryCopy( &halDelSTACtx,
21384 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021385 sizeof(halDelSTACtx));
21386
21387 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021388 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021389
21390 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21391 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21392 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21393 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21394
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021396 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021397 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021398 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021399 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21400 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021401
ltimariub77f24b2013-01-24 18:54:33 -080021402 if ( pWDICtx->wdiLowLevelIndCB )
21403 {
21404 /*Notify UMAC*/
21405 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21406 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021407
21408 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021409}/*WDI_ProcessDelSTAInd*/
21410
21411/**
21412*@brief Process Coex Indication function (called when
21413 an indication of this kind is being received over the
21414 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021415
21416 @param pWDICtx: pointer to the WLAN DAL context
21417 pEventData: pointer to the event information structure
21418
Jeff Johnson295189b2012-06-20 16:38:30 -070021419 @see
21420 @return Result of the function call
21421*/
21422WDI_Status
21423WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021424(
Jeff Johnson295189b2012-06-20 16:38:30 -070021425 WDI_ControlBlockType* pWDICtx,
21426 WDI_EventInfoType* pEventData
21427)
21428{
21429 WDI_LowLevelIndType wdiInd;
21430 tCoexIndMsg halCoexIndMsg;
21431 wpt_uint32 index;
21432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21433
21434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021436 -------------------------------------------------------------------------*/
21437 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21438 ( NULL == pEventData->pEventData ))
21439 {
21440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021442 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021444 }
21445
21446 /*-------------------------------------------------------------------------
21447 Extract indication and send it to UMAC
21448 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021449 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21450 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021451 sizeof(halCoexIndMsg.coexIndParams) );
21452
21453 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021454 wdiInd.wdiIndicationType = WDI_COEX_IND;
21455 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21457 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021458 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021459 }
21460
21461 // DEBUG
21462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21463 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021464 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21465 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21466 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21467 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21468 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021469
ltimariub77f24b2013-01-24 18:54:33 -080021470 if ( pWDICtx->wdiLowLevelIndCB )
21471 {
21472 /*Notify UMAC*/
21473 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21474 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021475
21476 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021477}/*WDI_ProcessCoexInd*/
21478
21479/**
21480*@brief Process Tx Complete Indication function (called when
21481 an indication of this kind is being received over the
21482 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021483
21484 @param pWDICtx: pointer to the WLAN DAL context
21485 pEventData: pointer to the event information structure
21486
Jeff Johnson295189b2012-06-20 16:38:30 -070021487 @see
21488 @return Result of the function call
21489*/
21490WDI_Status
21491WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021492(
Jeff Johnson295189b2012-06-20 16:38:30 -070021493 WDI_ControlBlockType* pWDICtx,
21494 WDI_EventInfoType* pEventData
21495)
21496{
21497 WDI_LowLevelIndType wdiInd;
21498 tTxComplIndMsg halTxComplIndMsg;
21499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21500
21501 /*-------------------------------------------------------------------------
21502 Sanity check
21503 -------------------------------------------------------------------------*/
21504 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21505 ( NULL == pEventData->pEventData ))
21506 {
21507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021509 WDI_ASSERT( 0 );
21510 return WDI_STATUS_E_FAILURE;
21511 }
21512
21513 /*-------------------------------------------------------------------------
21514 Extract indication and send it to UMAC
21515 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021516 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21517 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021518 sizeof(halTxComplIndMsg.txComplParams) );
21519
21520 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021521 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021522
21523 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21524 &halTxComplIndMsg.txComplParams,
21525 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021526
ltimariub77f24b2013-01-24 18:54:33 -080021527 if ( pWDICtx->wdiLowLevelIndCB )
21528 {
21529 /*Notify UMAC*/
21530 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21531 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021532
21533 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021534}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021535#ifdef FEATURE_WLAN_TDLS
21536/**
21537*@brief Process TDLS Indication function (called when
21538 an indication of this kind is being received over the
21539 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021540
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021541 @param pWDICtx: pointer to the WLAN DAL context
21542 pEventData: pointer to the event information structure
21543
21544 @see
21545 @return Result of the function call
21546*/
21547WDI_Status
21548WDI_ProcessTdlsInd
21549(
21550 WDI_ControlBlockType* pWDICtx,
21551 WDI_EventInfoType* pEventData
21552)
21553{
21554 WDI_LowLevelIndType wdiInd;
21555 tTdlsIndMsg halTdlsIndMsg;
21556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21557
21558 /*-------------------------------------------------------------------------
21559 Sanity check
21560 -------------------------------------------------------------------------*/
21561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21562 ( NULL == pEventData->pEventData ))
21563 {
21564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21565 "%s: Invalid parameters", __func__);
21566 WDI_ASSERT( 0 );
21567 return WDI_STATUS_E_FAILURE;
21568 }
21569
21570 /*-------------------------------------------------------------------------
21571 Extract indication and send it to UMAC
21572 -------------------------------------------------------------------------*/
21573 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21574 pEventData->pEventData,
21575 sizeof(halTdlsIndMsg.tdlsIndParams) );
21576
21577 /*Fill in the indication parameters*/
21578 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21579
21580 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21581 = halTdlsIndMsg.tdlsIndParams.status;
21582
21583 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21584 = halTdlsIndMsg.tdlsIndParams.staIdx;
21585
21586 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21587 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21588
Atul Mittalbb2aad02014-09-22 19:09:36 +053021589 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21590 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021591 /*Notify UMAC*/
21592 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21593
21594 return WDI_STATUS_SUCCESS;
21595}/*WDI_ProcessTdlsInd*/
21596#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021597/**
Viral Modid86bde22012-12-10 13:09:21 -080021598*@brief Process Noa Start Indication function (called when
21599 an indication of this kind is being received over the
21600 bus from HAL)
21601
21602 @param pWDICtx: pointer to the WLAN DAL context
21603 pEventData: pointer to the event information structure
21604
21605 @see
21606 @return Result of the function call
21607*/
21608WDI_Status
21609WDI_ProcessP2pNoaStartInd
21610(
21611 WDI_ControlBlockType* pWDICtx,
21612 WDI_EventInfoType* pEventData
21613)
21614{
21615 WDI_LowLevelIndType wdiInd;
21616 tNoaStartIndMsg halNoaStartIndMsg;
21617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21618
21619 /*-------------------------------------------------------------------------
21620 Sanity check
21621 -------------------------------------------------------------------------*/
21622 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21623 ( NULL == pEventData->pEventData ))
21624 {
21625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21626 "%s: Invalid parameters", __func__);
21627 WDI_ASSERT( 0 );
21628 return WDI_STATUS_E_FAILURE;
21629 }
21630
21631 /*-------------------------------------------------------------------------
21632 Extract indication and send it to UMAC
21633 -------------------------------------------------------------------------*/
21634 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21635 pEventData->pEventData,
21636 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21637
21638 /*Fill in the indication parameters*/
21639 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21640
21641 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21642 = halNoaStartIndMsg.noaStartIndParams.status;
21643
21644 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21645 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21646
21647 /*Notify UMAC*/
21648 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21649
21650 return WDI_STATUS_SUCCESS;
21651}/*WDI_ProcessNoaAttrInd*/
21652
21653/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021654*@brief Process Noa Attr Indication function (called when
21655 an indication of this kind is being received over the
21656 bus from HAL)
21657
21658 @param pWDICtx: pointer to the WLAN DAL context
21659 pEventData: pointer to the event information structure
21660
21661 @see
21662 @return Result of the function call
21663*/
21664WDI_Status
21665WDI_ProcessP2pNoaAttrInd
21666(
21667 WDI_ControlBlockType* pWDICtx,
21668 WDI_EventInfoType* pEventData
21669)
21670{
21671 WDI_LowLevelIndType wdiInd;
21672 tNoaAttrIndMsg halNoaAttrIndMsg;
21673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21674
21675 /*-------------------------------------------------------------------------
21676 Sanity check
21677 -------------------------------------------------------------------------*/
21678 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21679 ( NULL == pEventData->pEventData ))
21680 {
21681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021683 WDI_ASSERT( 0 );
21684 return WDI_STATUS_E_FAILURE;
21685 }
21686
21687 /*-------------------------------------------------------------------------
21688 Extract indication and send it to UMAC
21689 -------------------------------------------------------------------------*/
21690 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21691 pEventData->pEventData,
21692 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21693
21694 /*Fill in the indication parameters*/
21695 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021696
Jeff Johnson295189b2012-06-20 16:38:30 -070021697 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21698 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021699
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21701 = halNoaAttrIndMsg.noaAttrIndParams.index;
21702 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21703 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21704 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21705 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021706
Jeff Johnson295189b2012-06-20 16:38:30 -070021707 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21708 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21709 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21710 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21711 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21712 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21713 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21714 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021715
Jeff Johnson295189b2012-06-20 16:38:30 -070021716 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21717 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21718 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21719 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21720 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21721 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21722 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21723 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21724
ltimariub77f24b2013-01-24 18:54:33 -080021725 if ( pWDICtx->wdiLowLevelIndCB )
21726 {
21727 /*Notify UMAC*/
21728 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21729 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021730
21731 return WDI_STATUS_SUCCESS;
21732}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021733
21734/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021735 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021736 an indication of this kind is being received over the
21737 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021738
21739 @param pWDICtx: pointer to the WLAN DAL context
21740 pEventData: pointer to the event information structure
21741
Jeff Johnson295189b2012-06-20 16:38:30 -070021742 @see
21743 @return Result of the function call
21744*/
21745WDI_Status
21746WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021747(
Jeff Johnson295189b2012-06-20 16:38:30 -070021748 WDI_ControlBlockType* pWDICtx,
21749 WDI_EventInfoType* pEventData
21750)
21751{
21752 WDI_LowLevelIndType wdiInd;
21753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021754
Jeff Johnson295189b2012-06-20 16:38:30 -070021755 /*-------------------------------------------------------------------------
21756 Extract indication and send it to UMAC
21757 -------------------------------------------------------------------------*/
21758 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21760
ltimariub77f24b2013-01-24 18:54:33 -080021761 if ( pWDICtx->wdiLowLevelIndCB )
21762 {
21763 /*Notify UMAC*/
21764 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21765 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021766
Jeff Johnsone7245742012-09-05 17:12:55 -070021767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021768}/*WDI_ProcessTxPerHitInd*/
21769
Jeff Johnson295189b2012-06-20 16:38:30 -070021770/**
Yue Mab9c86f42013-08-14 15:59:08 -070021771 @brief Process Periodic Tx Pattern Fw Indication function
21772
21773 @param pWDICtx: pointer to the WLAN DAL context
21774 pEventData: pointer to the event information structure
21775
21776 @see
21777 @return Result of the function call
21778*/
21779WDI_Status
21780WDI_ProcessPeriodicTxPtrnFwInd
21781(
21782 WDI_ControlBlockType* pWDICtx,
21783 WDI_EventInfoType* pEventData
21784)
21785{
21786 WDI_LowLevelIndType wdiInd;
21787
21788 /*-------------------------------------------------------------------------
21789 Sanity check
21790 -------------------------------------------------------------------------*/
21791 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21792 (NULL == pEventData->pEventData))
21793 {
21794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21795 "%s: Invalid parameters", __func__);
21796 WDI_ASSERT(0);
21797 return WDI_STATUS_E_FAILURE;
21798 }
21799
21800 /*-------------------------------------------------------------------------
21801 Extract indication and send it to UMAC
21802 -------------------------------------------------------------------------*/
21803 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21804 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21805 sizeof(tHalPeriodicTxPtrnFwInd));
21806
21807 if (pWDICtx->wdiLowLevelIndCB)
21808 {
21809 /*Notify UMAC*/
21810 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21811 }
21812
21813 return WDI_STATUS_SUCCESS;
21814}
21815
21816/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021817 @brief WDI_ProcessFTMCommandReq
21818 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021819
21820 @param pWDICtx: pointer to the WLAN DAL context
21821 pEventData: pointer to the event information structure
21822
Jeff Johnson295189b2012-06-20 16:38:30 -070021823 @see
21824 @return Result of the function call
21825*/
21826WDI_Status
21827WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021828(
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 WDI_ControlBlockType* pWDICtx,
21830 WDI_EventInfoType* pEventData
21831)
21832{
21833 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21834 wpt_uint8 *ftmCommandBuffer = NULL;
21835 wpt_uint16 dataOffset;
21836 wpt_uint16 bufferSize;
21837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021839 -------------------------------------------------------------------------*/
21840 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21841 ( NULL == pEventData->pEventData))
21842
21843 {
21844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 }
21849
21850 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21851
21852 /* Get MSG Buffer */
21853 WDI_GetMessageBuffer(pWDICtx,
21854 WDI_FTM_CMD_REQ,
21855 ftmCommandReq->bodyLength,
21856 &ftmCommandBuffer,
21857 &dataOffset,
21858 &bufferSize);
21859
21860 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21861 ftmCommandReq->FTMCommandBody,
21862 ftmCommandReq->bodyLength);
21863
21864 /* Send MSG */
21865 return WDI_SendMsg(pWDICtx,
21866 ftmCommandBuffer,
21867 bufferSize,
21868 pEventData->pCBfnc,
21869 pEventData->pUserData,
21870 WDI_FTM_CMD_RESP);
21871}
21872
21873/**
21874 @brief WDI_ProcessFTMCommandRsp
21875 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021876
21877 @param pWDICtx: pointer to the WLAN DAL context
21878 pEventData: pointer to the event information structure
21879
Jeff Johnson295189b2012-06-20 16:38:30 -070021880 @see
21881 @return Result of the function call
21882*/
21883WDI_Status
21884WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021885(
Jeff Johnson295189b2012-06-20 16:38:30 -070021886 WDI_ControlBlockType* pWDICtx,
21887 WDI_EventInfoType* pEventData
21888)
21889{
21890 WDI_FTMCommandRspCb ftmCMDRspCb;
21891 tProcessPttRspParams *ftmCMDRspData = NULL;
21892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21893
21894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021896 -------------------------------------------------------------------------*/
21897 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21898 ( NULL == pEventData->pEventData))
21899 {
21900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021904 }
21905
21906 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21907
21908 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21909
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21911 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21913
21914 /*Notify UMAC*/
21915 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21916
Jeff Johnsone7245742012-09-05 17:12:55 -070021917 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021918}
Jeff Johnson295189b2012-06-20 16:38:30 -070021919/**
21920 @brief WDI_ProcessHalDumpCmdReq
21921 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021922
21923 @param pWDICtx: pointer to the WLAN DAL context
21924 pEventData: pointer to the event information structure
21925
Jeff Johnson295189b2012-06-20 16:38:30 -070021926 @see
21927 @return Result of the function call
21928*/
21929WDI_Status
21930WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021931(
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 WDI_ControlBlockType* pWDICtx,
21933 WDI_EventInfoType* pEventData
21934)
21935{
21936 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21937 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21938 wpt_uint16 usDataOffset = 0;
21939 wpt_uint16 usSendSize = 0;
21940 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021942
21943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 -------------------------------------------------------------------------*/
21946 if (( NULL == pEventData ) ||
21947 ( NULL == pEventData->pEventData) ||
21948 ( NULL == pEventData->pCBfnc ))
21949 {
21950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021951 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 }
21955
21956 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21957 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21958
21959 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021960 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021964 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021970
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 /*-----------------------------------------------------------------------
21972 Get message buffer
21973 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21976 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021977 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21979 {
21980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021981 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021982 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 }
21986
Jeff Johnsone7245742012-09-05 17:12:55 -070021987 wpalMemoryCopy( pSendBuffer+usDataOffset,
21988 &halDumpCmdReqMsg.dumpCmdReqParams,
21989 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021990
21991 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021993
21994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021995 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21998 wdiHALDumpCmdRspCb, pEventData->pUserData,
21999 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022000}
22001
22002/**
22003 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022004 Process hal Dump Command Response from HAL, simply route to HDD
22005
22006 @param pWDICtx: pointer to the WLAN DAL context
22007 pEventData: pointer to the event information structure
22008
Jeff Johnson295189b2012-06-20 16:38:30 -070022009 @see
22010 @return Result of the function call
22011*/
22012WDI_Status
22013WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022014(
Jeff Johnson295189b2012-06-20 16:38:30 -070022015 WDI_ControlBlockType* pWDICtx,
22016 WDI_EventInfoType* pEventData
22017)
22018{
22019 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022020 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022021 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22022
22023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022025 -------------------------------------------------------------------------*/
22026 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22027 ( NULL == pEventData->pEventData))
22028 {
22029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022030 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022033 }
22034
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022036
22037 /*Initialize the WDI Response structure */
22038 wdiHALDumpCmdRsp.usBufferLen = 0;
22039 wdiHALDumpCmdRsp.pBuffer = NULL;
22040
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022041 wpalMemoryCopy( &halDumpCmdRspParams,
22042 pEventData->pEventData,
22043 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022044
22045 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022046 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022047
22048 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022049 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022050 {
22051 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022052 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22053 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22054
22055 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22056 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022057 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022058 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022059
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 /*Notify UMAC*/
22061 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22062
22063 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22064 {
22065 /* Free the allocated buffer */
22066 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22067 }
22068 return WDI_STATUS_SUCCESS;
22069}
22070
22071/*==========================================================================
22072 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022073
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022075 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022076==========================================================================*/
22077/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022078 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022079 when it wishes to send up a notification like the ones
22080 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022081
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022083
22084 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022086 wctsNotifyCBData: the callback data of the user
22087
Jeff Johnson295189b2012-06-20 16:38:30 -070022088 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022089
22090 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022091*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022092void
Jeff Johnson295189b2012-06-20 16:38:30 -070022093WDI_NotifyMsgCTSCB
22094(
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022096 WCTS_NotifyEventType wctsEvent,
22097 void* wctsNotifyCBData
22098)
22099{
Jeff Johnsone7245742012-09-05 17:12:55 -070022100 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22102
22103 if (NULL == pWDICtx )
22104 {
22105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 }
22110
22111 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22112 {
22113 /* callback presumably occurred after close */
22114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022115 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 }
22118
22119 if ( WCTS_EVENT_OPEN == wctsEvent )
22120 {
22121 /*Flag must be set atomically as it is checked from incoming request
22122 functions*/
22123 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022125
22126 /*Nothing to do - so try to dequeue any pending request that may have
22127 occurred while we were trying to establish this*/
22128 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022130 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022131 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 {
22133 /*Flag must be set atomically as it is checked from incoming request
22134 functions*/
22135 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022136 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022137
22138 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022140 wpalMutexRelease(&pWDICtx->wptMutex);
22141
22142 /*Notify that the Control Channel is closed */
22143 wpalEventSet(&pWDICtx->wctsActionEvent);
22144 }
22145
22146}/*WDI_NotifyMsgCTSCB*/
22147
22148
22149/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022150 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022151 when it wishes to send up a packet received over the
22152 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022153
Jeff Johnson295189b2012-06-20 16:38:30 -070022154 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022155
22156 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 pMsg: the packet
22158 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022159 wctsRxMsgCBData: the callback data of the user
22160
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022162
22163 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022164*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022165void
22166WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022167(
Jeff Johnsone7245742012-09-05 17:12:55 -070022168 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022169 void* pMsg,
22170 wpt_uint32 uLen,
22171 void* wctsRxMsgCBData
22172)
22173{
Jeff Johnsone7245742012-09-05 17:12:55 -070022174 tHalMsgHeader *pHalMsgHeader;
22175 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22178
22179 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 ( uLen < sizeof(tHalMsgHeader)))
22184 {
22185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022188 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022189 }
22190
22191 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22192 {
22193 /* callback presumably occurred after close */
22194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022195 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022196 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022197 }
22198
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022200 context - so no serialization is necessary here
22201 ! - revisit this assumption */
22202
22203 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22204
22205 if ( uLen != pHalMsgHeader->msgLen )
22206 {
22207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22208 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022209 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022210 wpalWlanReload();
22211
Jeff Johnsone7245742012-09-05 17:12:55 -070022212 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022213 }
22214
22215 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22216
22217 /*The message itself starts after the header*/
22218 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22219 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22220 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22221 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22222
22223
22224 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22225 {
22226 /*Stop the timer as the response was received */
22227 /*!UT - check for potential race conditions between stop and response */
22228 wpalTimerStop(&pWDICtx->wptResponseTimer);
22229 }
22230 /* Check if we receive a response message which is not expected */
22231 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22232 {
22233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22234 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22235 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022236 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022237 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22238 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022239
22240 if (gWDICb.bEnableSSR == false)
22241 {
22242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22243 "SSR is not enabled on WDI timeout");
22244 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22245 return;
22246 }
22247 wpalWcnssResetIntr();
22248 /* if this timer fires, it means Riva did not receive the FIQ */
22249 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22250
Jeff Johnson295189b2012-06-20 16:38:30 -070022251 return;
22252 }
22253
22254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22255 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22256
22257 /*Post response event to the state machine*/
22258 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22259
22260}/*WDI_RXMsgCTSCB*/
22261
22262
22263/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022265========================================================================*/
22266
22267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022268 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022269 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022270
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 @param pWDICtx - pointer to the control block
22272
22273 @return Result of the function call
22274*/
22275WPT_INLINE WDI_Status
22276WDI_CleanCB
22277(
22278 WDI_ControlBlockType* pWDICtx
22279)
22280{
22281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22282
22283 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022284 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022285
Jeff Johnsone7245742012-09-05 17:12:55 -070022286 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22288 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22289
22290 WDI_ResetAssocSessions( pWDICtx );
22291
22292 return WDI_STATUS_SUCCESS;
22293}/*WDI_CleanCB*/
22294
22295
22296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022298
Jeff Johnsone7245742012-09-05 17:12:55 -070022299
22300 @param pWDICtx: pointer to the WLAN DAL context
22301 pEventData: pointer to the event information structure
22302
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 @see
22304 @return Result of the function call
22305*/
22306WPT_INLINE WDI_Status
22307WDI_ProcessRequest
22308(
22309 WDI_ControlBlockType* pWDICtx,
22310 WDI_EventInfoType* pEventData
22311)
22312{
22313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22314
Jeff Johnsone7245742012-09-05 17:12:55 -070022315 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022316 already checked these pointers*/
22317
22318 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22319 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022320 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022322 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022323 WDI_getReqMsgString(pEventData->wdiRequest),
22324 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22325 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22326 }
22327 else
22328 {
22329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022330 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022331 pEventData->wdiRequest);
22332 return WDI_STATUS_E_NOT_IMPLEMENT;
22333 }
22334}/*WDI_ProcessRequest*/
22335
22336
22337/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022338 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022339 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022340 prefixes it with a send message header
22341
22342 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022343 wdiReqType: type of the request being sent
22344 uBufferLen: message buffer len
22345 pMsgBuffer: resulting allocated buffer
22346 pusDataOffset: offset in the buffer where the caller
22347 can start copying its message data
22348 puBufferSize: the resulting buffer size (offset+buff
22349 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022350
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 @see
22352 @return Result of the function call
22353*/
22354WDI_Status
22355WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022356(
22357 WDI_ControlBlockType* pWDICtx,
22358 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022359 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 wpt_uint8** pMsgBuffer,
22361 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 wpt_uint16* pusBufferSize
22363)
22364{
22365 tHalMsgHeader halMsgHeader;
22366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22367
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 again*/
22370
22371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022372 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022373 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022374 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22376 if ( NULL == *pMsgBuffer )
22377 {
22378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22379 "Unable to allocate message buffer for req %s (%d)",
22380 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022381 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022383 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022384 }
22385
22386 /*-------------------------------------------------------------------------
22387 Fill in the message header
22388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022389 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22390 /* Fill msgVersion */
22391#ifdef WLAN_FEATURE_11AC
22392 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022393 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 else
22395#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022396 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022397
Jeff Johnsone7245742012-09-05 17:12:55 -070022398 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22399 *pusDataOffset = sizeof(halMsgHeader);
22400 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22401
22402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022403}/*WDI_GetMessageBuffer*/
22404
22405
22406/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022407 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022408 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 the CB
22410
22411 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022413
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 usSendSize size of the buffer to be sent
22415 pRspCb: response callback - save in the WDI
22416 CB
22417 pUserData: user data associated with the
22418 callback
22419 wdiExpectedResponse: the code of the response that is
22420 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022421
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 @see
22423 @return Result of the function call
22424*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022426WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022427(
22428 WDI_ControlBlockType* pWDICtx,
22429 wpt_uint8* pSendBuffer,
22430 wpt_uint32 usSendSize,
22431 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 void* pUserData,
22433 WDI_ResponseEnumType wdiExpectedResponse
22434)
22435{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022436 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022437 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22439
22440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022441 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022442 ------------------------------------------------------------------------*/
22443 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 pWDICtx->pfncRspCB = pRspCb;
22445 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022446
22447 /*-----------------------------------------------------------------------
22448 Call the CTS to send this message over - free message afterwards
22449 - notify transport failure
22450 Note: CTS is reponsible for freeing the message buffer.
22451 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022452 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22453 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22454 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022455 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022457 "Failed to send message with expected response %s (%d)"
22458 " over the bus - catastrophic failure",
22459 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22460 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022461
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022462 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22463 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022465 else
22466 {
22467 /* even when message was placed in CTS deferred Q, we will treat it
22468 success but log this info
22469 */
22470 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22471 {
22472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22473 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22474 "response %s (%d)",
22475 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22476 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022477 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022478 }
22479 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022480
Jeff Johnsond13512a2012-07-17 11:42:19 -070022481 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 if ( NULL != pWDICtx->wdiReqStatusCB )
22483 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022484 /*Inform originator whether request went through or not*/
22485 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22486 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 pWDICtx->wdiReqStatusCB = NULL;
22488 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022489 callback(wdiStatus, callbackContext);
22490
22491 /*For WDI requests which have registered a request callback,
22492 inform the WDA caller of the same via setting the return value
22493 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22494 end up repeating the functonality in the req callback for the
22495 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022496 if (wdiStatus != WDI_STATUS_SUCCESS)
22497 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022498 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022499 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 }
22501
Jeff Johnsond13512a2012-07-17 11:42:19 -070022502 if ( wdiStatus == WDI_STATUS_SUCCESS )
22503 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 /*Start timer for the expected response */
22505 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022506
22507 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022508 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022509 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022510 }
22511 else
22512 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022513 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022514 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22515 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022516
Jeff Johnsond13512a2012-07-17 11:42:19 -070022517 return wdiStatus;
22518
Jeff Johnson295189b2012-06-20 16:38:30 -070022519}/*WDI_SendMsg*/
22520
22521
22522
22523/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022524 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022525 the bus using the control transport and saves some info
22526 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022527
22528 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 pSendBuffer: buffer to be sent
22530 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022531
Jeff Johnson295189b2012-06-20 16:38:30 -070022532 @see
22533 @return Result of the function call
22534*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022536WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022537(
22538 WDI_ControlBlockType* pWDICtx,
22539 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022540 wpt_uint32 usSendSize
22541)
22542{
22543 wpt_uint32 uStatus ;
22544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22545
22546 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022547 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022548 Note: CTS is reponsible for freeing the message buffer.
22549 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022550 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 (void*)pSendBuffer, usSendSize );
22552
22553 /*Inform Upper MAC about the outcome of the request*/
22554 if ( NULL != pWDICtx->wdiReqStatusCB )
22555 {
22556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22557 "Send indication status : %d", uStatus);
22558
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022559 /* even if CTS placed indication into its deferred Q, we treat it
22560 * as success and let CTS drain its queue as per smd interrupt to CTS
22561 */
22562 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 -070022563 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022564 }
22565
22566 /*If sending of the message failed - it is considered catastrophic and
22567 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022568 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22569 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22570
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 {
22572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022573 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022574
22575 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22576 return WDI_STATUS_E_FAILURE;
22577 }
22578
Jeff Johnsone7245742012-09-05 17:12:55 -070022579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022580}/*WDI_SendIndication*/
22581
22582
22583/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022584 @brief WDI_DetectedDeviceError - called internally by DAL when
22585 it has detected a failure in the device
22586
22587 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 usErrorCode: error code detected by WDI or received
22589 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022590
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022592 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022593*/
22594void
22595WDI_DetectedDeviceError
22596(
22597 WDI_ControlBlockType* pWDICtx,
22598 wpt_uint16 usErrorCode
22599)
22600{
22601 WDI_LowLevelIndType wdiInd;
22602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22603
22604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22605 "Device Error detected code: %d - transitioning to stopped state",
22606 usErrorCode);
22607
Katya Nigamf02ad012014-05-05 16:12:49 +053022608 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22609
Jeff Johnson295189b2012-06-20 16:38:30 -070022610 wpalMutexAcquire(&pWDICtx->wptMutex);
22611
22612 WDI_STATableStop(pWDICtx);
22613
22614 WDI_ResetAssocSessions(pWDICtx);
22615
22616 /*Set the expected state transition to stopped - because the device
22617 experienced a failure*/
22618 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22619
22620 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022621 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022622
Jeff Johnsone7245742012-09-05 17:12:55 -070022623 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022624
22625 /*TO DO: - there should be an attempt to reset the device here*/
22626
22627 wpalMutexRelease(&pWDICtx->wptMutex);
22628
22629 /*------------------------------------------------------------------------
22630 Notify UMAC if a handler is registered
22631 ------------------------------------------------------------------------*/
22632 if (pWDICtx->wdiLowLevelIndCB)
22633 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022634 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22635 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022636
22637 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22638 }
22639}/*WDI_DetectedDeviceError*/
22640
22641/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022642 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 we started on send message has expire - this should
22644 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022645 reply - trigger catastrophic failure
22646 @param
22647
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022649
22650 @see
22651 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022652*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022653void
Jeff Johnson295189b2012-06-20 16:38:30 -070022654WDI_ResponseTimerCB
22655(
22656 void *pUserData
22657)
22658{
22659 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22661
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022662 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022663 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 }
22669
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022670 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022671 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022672 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022673
22674 /* If response timer is running at this time that means this timer
22675 * event is not for the last request but rather last-to-last request and
22676 * this timer event has come after we recevied respone for last-to-last
22677 * message
22678 */
22679 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22680 {
22681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22682 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022683 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022684 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22686 "uArchTimeStampTmrStart: %llu seconds, "
22687 "uArchTimeStampTmrExp: %llu seconds",
22688 pWDICtx->uArchTimeStampRspTmrStart,
22689 pWDICtx->uArchTimeStampRspTmrExp);
22690
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022691 return;
22692 }
22693
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022694 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 {
22696
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022698 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022699 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022701 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22702 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22704 "uArchTimeStampTmrStart: %llu seconds, "
22705 "uArchTimeStampTmrExp: %llu seconds",
22706 pWDICtx->uArchTimeStampRspTmrStart,
22707 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022708
22709 /* WDI timeout means Riva is not responding or SMD communication to Riva
22710 * is not happening. The only possible way to recover from this error
22711 * is to initiate SSR from APPS.
22712 * There is also an option to re-enable wifi, which will eventually
22713 * trigger SSR
22714 */
22715 if (gWDICb.bEnableSSR == false)
22716 {
22717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22718 "SSR is not enabled on WDI timeout");
22719 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22720 return;
22721 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022722#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022723 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022724 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022725 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022726 if(wpalIsSsrPanicOnFailure())
22727 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022728 } else {
22729 /* if this timer fires, it means Riva did not receive the FIQ */
22730 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022731 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022732#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022733 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22734 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022735#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022736 }
22737 else
22738 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022740 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022741 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022742 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22743 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22745 "uArchTimeStampTmrStart: %llu seconds, "
22746 "uArchTimeStampTmrExp: %llu seconds",
22747 pWDICtx->uArchTimeStampRspTmrStart,
22748 pWDICtx->uArchTimeStampRspTmrExp);
22749
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 }
22751
22752 return;
22753
22754}/*WDI_ResponseTimerCB*/
22755
22756
22757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022759
Jeff Johnsone7245742012-09-05 17:12:55 -070022760
22761 @param pWDICtx: pointer to the WLAN DAL context
22762 pEventData: pointer to the event information structure
22763
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 @see
22765 @return Result of the function call
22766*/
22767WPT_INLINE WDI_Status
22768WDI_ProcessResponse
22769(
22770 WDI_ControlBlockType* pWDICtx,
22771 WDI_EventInfoType* pEventData
22772)
22773{
22774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22775
Jeff Johnsone7245742012-09-05 17:12:55 -070022776 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 already checked these pointers
22778 ! - revisit this assumption */
22779 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22780 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022783 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 WDI_getRespMsgString(pEventData->wdiResponse),
22785 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22786 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22787 }
22788 else
22789 {
22790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022791 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022792 pEventData->wdiResponse);
22793 return WDI_STATUS_E_NOT_IMPLEMENT;
22794 }
22795}/*WDI_ProcessResponse*/
22796
22797
22798/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022799 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022800=========================================================================*/
22801
22802/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022803 @brief Utility function used by the DAL Core to help queue a
22804 request that cannot be processed right away.
22805 @param
22806
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 pWDICtx: - pointer to the WDI control block
22808 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022809 queued
22810
22811 @see
22812 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022813*/
22814WDI_Status
22815WDI_QueuePendingReq
22816(
22817 WDI_ControlBlockType* pWDICtx,
22818 WDI_EventInfoType* pEventData
22819)
22820{
Jeff Johnsone7245742012-09-05 17:12:55 -070022821 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022823 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22825
22826 if ( NULL == pEventDataQueue )
22827 {
22828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022829 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022830 WDI_ASSERT(0);
22831 return WDI_STATUS_MEM_FAILURE;
22832 }
22833
22834 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22835 pEventDataQueue->pUserData = pEventData->pUserData;
22836 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22837 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022838 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022839
22840 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22841 {
22842 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022843
Jeff Johnson295189b2012-06-20 16:38:30 -070022844 if ( NULL == pEventInfo )
22845 {
22846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022847 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022848 WDI_ASSERT(0);
22849 wpalMemoryFree(pEventDataQueue);
22850 return WDI_STATUS_MEM_FAILURE;
22851 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022852
Jeff Johnson295189b2012-06-20 16:38:30 -070022853 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22854
22855 }
22856 pEventDataQueue->pEventData = pEventInfo;
22857
22858 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022860
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022861 if (eWLAN_PAL_STATUS_E_FAILURE ==
22862 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22863 {
22864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22865 "pEventDataQueue wpal_list_insert_back failed");
22866 WDI_ASSERT(0);
22867 wpalMemoryFree(pEventDataQueue);
22868 wpalMemoryFree(pEventInfo);
22869 return WDI_STATUS_MEM_FAILURE;
22870 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022871
22872 return WDI_STATUS_SUCCESS;
22873}/*WDI_QueuePendingReq*/
22874
22875/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022876 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022878 @param
22879
22880 pMsg - pointer to the message
22881
22882 @see
22883 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022884*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022885void
Jeff Johnson295189b2012-06-20 16:38:30 -070022886WDI_PALCtrlMsgCB
22887(
22888 wpt_msg *pMsg
22889)
22890{
22891 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022892 WDI_ControlBlockType* pWDICtx = NULL;
22893 WDI_Status wdiStatus;
22894 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022895 void* pUserData;
22896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22897
22898 if (( NULL == pMsg )||
22899 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22900 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22901 {
22902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022903 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022905 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022906 }
22907
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022908 /*Access to the global state must be locked */
22909 wpalMutexAcquire(&pWDICtx->wptMutex);
22910
Jeff Johnson295189b2012-06-20 16:38:30 -070022911 /*Transition back to the state that we had before serialization
22912 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022913 */
Jeff Johnsone7245742012-09-05 17:12:55 -070022914 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022915 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022916
22917 /*-----------------------------------------------------------------------
22918 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022919 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022920 -----------------------------------------------------------------------*/
22921 switch ( pEventData->wdiRequest )
22922 {
22923
Jeff Johnsone7245742012-09-05 17:12:55 -070022924 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022925 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22926 break;
22927
Jeff Johnson295189b2012-06-20 16:38:30 -070022928 case WDI_NV_DOWNLOAD_REQ:
22929 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22930 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22931 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22932 {
22933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022934 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022935 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22936 }
22937 else
22938 {
22939 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22940 }
22941
22942 break;
22943
22944 default:
22945 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22946 break;
22947 }/*switch ( pEventData->wdiRequest )*/
22948
22949 if ( WDI_STATUS_SUCCESS != wdiStatus )
22950 {
22951 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22952
22953 if ( NULL != pfnReqStatusCB )
22954 {
22955 /*Fail the request*/
22956 pfnReqStatusCB( wdiStatus, pUserData);
22957 }
22958 }
22959
22960 /* Free data - that was allocated when queueing*/
22961 if( pEventData != NULL )
22962 {
22963 if( pEventData->pEventData != NULL )
22964 {
22965 wpalMemoryFree(pEventData->pEventData);
22966 }
22967 wpalMemoryFree(pEventData);
22968 }
22969
22970 if( pMsg != NULL )
22971 {
22972 wpalMemoryFree(pMsg);
22973 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022974
Jeff Johnson295189b2012-06-20 16:38:30 -070022975}/*WDI_PALCtrlMsgCB*/
22976
22977/**
22978 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022979 and schedule for execution a pending request
22980 @param
22981
Jeff Johnson295189b2012-06-20 16:38:30 -070022982 pWDICtx: - pointer to the WDI control block
22983 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022984 queued
22985
22986 @see
22987 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022988*/
22989WDI_Status
22990WDI_DequeuePendingReq
22991(
22992 WDI_ControlBlockType* pWDICtx
22993)
22994{
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22999
Jeff Johnsone7245742012-09-05 17:12:55 -070023000 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023001
23002 if ( NULL == pNode )
23003 {
23004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 return WDI_STATUS_SUCCESS;
23007 }
23008
23009 /*The node actually points to the 1st element inside the Event Data struct -
23010 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023011 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023012
23013 /*Serialize processing in the control thread
23014 !TO DO: - check to see if these are all the messages params that need
23015 to be filled in*/
23016 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23017
23018 if ( NULL == palMsg )
23019 {
23020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023021 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023023 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023024 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023025 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 palMsg->callback = WDI_PALCtrlMsgCB;
23027 palMsg->ptr = pEventData;
23028
23029 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023030 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023031 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023032
Jeff Johnson295189b2012-06-20 16:38:30 -070023033 /*Transition back to BUSY as we need to handle a queued request*/
23034 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023035
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23037
23038 return WDI_STATUS_PENDING;
23039}/*WDI_DequeuePendingReq*/
23040
23041
23042/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023043 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023044 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023045 away.- The assoc requests will be queued by BSSID
23046 @param
23047
Jeff Johnson295189b2012-06-20 16:38:30 -070023048 pWDICtx: - pointer to the WDI control block
23049 pEventData: pointer to the evnt info that needs to be queued
23050 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023051
23052 @see
23053 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023054*/
23055WDI_Status
23056WDI_QueueNewAssocRequest
23057(
23058 WDI_ControlBlockType* pWDICtx,
23059 WDI_EventInfoType* pEventData,
23060 wpt_macAddr macBSSID
23061)
23062{
Jeff Johnsone7245742012-09-05 17:12:55 -070023063 wpt_uint8 i;
23064 WDI_BSSSessionType* pSession = NULL;
23065 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023067 void* pEventInfo;
23068 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023070
Jeff Johnsone7245742012-09-05 17:12:55 -070023071
23072 /*------------------------------------------------------------------------
23073 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 ------------------------------------------------------------------------*/
23075 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23076 {
23077 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23078 {
23079 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 pSession = &pWDICtx->aBSSSessions[i];
23081 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 }
23083 }
23084
23085 if ( i >= WDI_MAX_BSS_SESSIONS )
23086 {
23087 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023090
Jeff Johnson295189b2012-06-20 16:38:30 -070023091 /*------------------------------------------------------------------------
23092 Fill in the BSSID for this session and set the usage flag
23093 ------------------------------------------------------------------------*/
23094 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023095 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023096
23097 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023098 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023099 ------------------------------------------------------------------------*/
23100 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23101 if ( NULL == pEventDataQueue )
23102 {
23103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023104 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023105 WDI_ASSERT(0);
23106 return WDI_STATUS_MEM_FAILURE;
23107 }
23108
23109 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23110 if ( NULL == pSessionIdElement )
23111 {
23112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023113 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023114 WDI_ASSERT(0);
23115 wpalMemoryFree(pEventDataQueue);
23116 return WDI_STATUS_MEM_FAILURE;
23117 }
23118
23119 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23120 if ( NULL == pEventInfo )
23121 {
23122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023123 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023124 WDI_ASSERT(0);
23125 wpalMemoryFree(pSessionIdElement);
23126 wpalMemoryFree(pEventDataQueue);
23127 return WDI_STATUS_MEM_FAILURE;
23128 }
23129
23130 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23131 pEventDataQueue->pUserData = pEventData->pUserData;
23132 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23133 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023134 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023135
23136 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23137 pEventDataQueue->pEventData = pEventInfo;
23138
23139 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023140 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023141
23142 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023143 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023144
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023145 if (eWLAN_PAL_STATUS_E_FAILURE ==
23146 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23147 {
23148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23149 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23150 WDI_ASSERT(0);
23151 wpalMemoryFree(pSessionIdElement);
23152 wpalMemoryFree(pEventDataQueue);
23153 wpalMemoryFree(pEventInfo);
23154 return WDI_STATUS_MEM_FAILURE;
23155 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023156
23157 /*We need to maintain a separate list that keeps track of the order in which
23158 the new assoc requests are being queued such that we can start processing
23159 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023160 pSessionIdElement->ucIndex = i;
23161 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023162
23163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23164 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023165 if (eWLAN_PAL_STATUS_E_FAILURE ==
23166 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23167 {
23168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23169 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23170 WDI_ASSERT(0);
23171 wpalMemoryFree(pSessionIdElement);
23172 wpalMemoryFree(pEventDataQueue);
23173 wpalMemoryFree(pEventInfo);
23174 return WDI_STATUS_MEM_FAILURE;
23175 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023176
23177 /*Return pending as this is what the status of the request is since it has
23178 been queued*/
23179 return WDI_STATUS_PENDING;
23180}/*WDI_QueueNewAssocRequest*/
23181
23182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023183 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023184 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 away.- The assoc requests will be queued by BSSID
23186 @param
23187
Jeff Johnson295189b2012-06-20 16:38:30 -070023188 pWDICtx: - pointer to the WDI control block
23189 pSession: - session in which to queue
23190 pEventData: pointer to the event info that needs to be
23191 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023192
23193 @see
23194 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023195*/
23196WDI_Status
23197WDI_QueueAssocRequest
23198(
23199 WDI_ControlBlockType* pWDICtx,
23200 WDI_BSSSessionType* pSession,
23201 WDI_EventInfoType* pEventData
23202)
23203{
Jeff Johnsone7245742012-09-05 17:12:55 -070023204 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023206 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023208
23209 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023210 Sanity check
23211 ------------------------------------------------------------------------*/
23212 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23213 {
23214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023216
Jeff Johnsone7245742012-09-05 17:12:55 -070023217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 }
23219
23220 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023221 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023222 ------------------------------------------------------------------------*/
23223 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23224 if ( NULL == pEventDataQueue )
23225 {
23226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023227 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 WDI_ASSERT(0);
23229 return WDI_STATUS_MEM_FAILURE;
23230 }
23231
23232 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23233 if ( NULL == pEventInfo )
23234 {
23235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23236 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023237 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023238 WDI_ASSERT(0);
23239 wpalMemoryFree(pEventDataQueue);
23240 return WDI_STATUS_MEM_FAILURE;
23241 }
23242
23243 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23244 pEventDataQueue->pUserData = pEventData->pUserData;
23245 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23246 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023247 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023248 pEventDataQueue->pEventData = pEventInfo;
23249
23250 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23251
23252 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023253 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023254
23255 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023256 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023257
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023258 if (eWLAN_PAL_STATUS_E_FAILURE ==
23259 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23260 {
23261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23262 "%s: Cannot allocate memory for queueing event data info",
23263 __func__);
23264 WDI_ASSERT(0);
23265 wpalMemoryFree(pEventDataQueue);
23266 wpalMemoryFree(pEventInfo);
23267 return WDI_STATUS_MEM_FAILURE;
23268 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023269
23270 /*The result of this operation is pending because the request has been
23271 queued and it will be processed at a later moment in time */
23272 return WDI_STATUS_PENDING;
23273}/*WDI_QueueAssocRequest*/
23274
23275/**
23276 @brief Utility function used by the DAL Core to help dequeue
23277 an association request that was pending
23278 The request will be queued up in front of the main
23279 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 @param
23281
Jeff Johnson295189b2012-06-20 16:38:30 -070023282 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023283
23284
23285 @see
23286 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023287*/
23288WDI_Status
23289WDI_DequeueAssocRequest
23290(
23291 WDI_ControlBlockType* pWDICtx
23292)
23293{
Jeff Johnsone7245742012-09-05 17:12:55 -070023294 wpt_list_node* pNode = NULL;
23295 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023296 WDI_BSSSessionType* pSession;
23297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023298
23299 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023300 Sanity check
23301 ------------------------------------------------------------------------*/
23302 if ( NULL == pWDICtx )
23303 {
23304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023306
Jeff Johnsone7245742012-09-05 17:12:55 -070023307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023308 }
23309
23310 /*------------------------------------------------------------------------
23311 An association has been completed => a new association can occur
23312 Check to see if there are any pending associations ->
23313 If so , transfer all the pending requests into the busy queue for
23314 processing
23315 These requests have arrived prior to the requests in the busy queue
23316 (bc they needed to be processed in order to be placed in this queue)
23317 => they will be placed at the front of the busy queue
23318 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023320
23321 if ( NULL == pNode )
23322 {
23323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023325 return WDI_STATUS_SUCCESS;
23326 }
23327
23328 /*The node actually points to the 1st element inside the Session Id struct -
23329 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023330 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023331
23332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23333 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23334
23335 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23336 {
23337 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023338
Jeff Johnson295189b2012-06-20 16:38:30 -070023339 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023340 the front of the main waiting queue for subsequent execution*/
23341 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 while ( NULL != pNode )
23343 {
23344 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023345 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23346 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023347 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023348 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023349 }
23350 else
23351 {
23352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 WPAL_ASSERT(0);
23355 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023357 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023358
Jeff Johnson295189b2012-06-20 16:38:30 -070023359 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23360 wpalMemoryFree(pSessionIdElement);
23361 return WDI_STATUS_SUCCESS;
23362}/*WDI_DequeueAssocRequest*/
23363
23364/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023365 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 pending requests - all req cb will be called with
23367 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023368 @param
23369
Jeff Johnson295189b2012-06-20 16:38:30 -070023370 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023371
23372 @see
23373 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023374*/
23375WDI_Status
23376WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023377(
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 WDI_ControlBlockType* pWDICtx
23379)
23380{
Jeff Johnsone7245742012-09-05 17:12:55 -070023381 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 void* pUserData;
23385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23386
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023388
23389 /*------------------------------------------------------------------------
23390 Go through all the requests and fail them - this will only be called
23391 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023392 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 ------------------------------------------------------------------------*/
23394 while( pNode )
23395 {
23396 /*The node actually points to the 1st element inside the Event Data struct -
23397 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023398 pEventDataQueue = (WDI_EventInfoType*)pNode;
23399
Jeff Johnson295189b2012-06-20 16:38:30 -070023400 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23401 if ( NULL != pfnReqStatusCB )
23402 {
23403 /*Fail the request*/
23404 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23405 }
23406 /* Free data - that was allocated when queueing */
23407 if ( pEventDataQueue->pEventData != NULL )
23408 {
23409 wpalMemoryFree(pEventDataQueue->pEventData);
23410 }
23411 wpalMemoryFree(pEventDataQueue);
23412
23413 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23414 {
23415 break;
23416 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023417 }
23418
Jeff Johnson295189b2012-06-20 16:38:30 -070023419 return WDI_STATUS_SUCCESS;
23420}/*WDI_ClearPendingRequests*/
23421
23422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023423 @brief Helper routine used to init the BSS Sessions in the WDI control block
23424
23425
23426 @param pWDICtx: pointer to the WLAN DAL context
23427
Jeff Johnson295189b2012-06-20 16:38:30 -070023428 @see
23429*/
23430void
23431WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023432(
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 WDI_ControlBlockType* pWDICtx
23434)
23435{
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23438
23439 /*-------------------------------------------------------------------------
23440 No Sanity check
23441 -------------------------------------------------------------------------*/
23442 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23443 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023445 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23446 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23447 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23448 }
23449}/*WDI_ResetAssocSessions*/
23450
23451/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023452 @brief Helper routine used to find a session based on the BSSID
23453
23454
23455 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023456 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 pSession: pointer to the session (if found)
23458
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023460 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023461*/
23462wpt_uint8
23463WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023464(
Jeff Johnson295189b2012-06-20 16:38:30 -070023465 WDI_ControlBlockType* pWDICtx,
23466 wpt_macAddr macBSSID,
23467 WDI_BSSSessionType** ppSession
23468)
23469{
Jeff Johnsone7245742012-09-05 17:12:55 -070023470 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23472
23473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023475 -------------------------------------------------------------------------*/
23476 if ( NULL == ppSession )
23477 {
23478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023479 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023480 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023481 }
23482
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023484
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 /*------------------------------------------------------------------------
23486 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023487 ------------------------------------------------------------------------*/
23488 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23489 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023490 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23491 (eWLAN_PAL_TRUE ==
23492 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23493 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023494 {
23495 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023496 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023497 return i;
23498 }
23499 }
23500
Jeff Johnsone7245742012-09-05 17:12:55 -070023501 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023502}/*WDI_FindAssocSession*/
23503
23504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023505 @brief Helper routine used to find a session based on the BSSID
23506
23507
23508 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023509 ucBSSIdx: BSS Index of the session
23510 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023511
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023513 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023514*/
23515wpt_uint8
23516WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023517(
Jeff Johnson295189b2012-06-20 16:38:30 -070023518 WDI_ControlBlockType* pWDICtx,
23519 wpt_uint16 ucBSSIdx,
23520 WDI_BSSSessionType** ppSession
23521)
23522{
Jeff Johnsone7245742012-09-05 17:12:55 -070023523 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23525
23526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023528 -------------------------------------------------------------------------*/
23529 if ( NULL == ppSession )
23530 {
23531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023532 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023533 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023534 }
23535
Jeff Johnsone7245742012-09-05 17:12:55 -070023536 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023537
Jeff Johnsone7245742012-09-05 17:12:55 -070023538 /*------------------------------------------------------------------------
23539 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023540 ------------------------------------------------------------------------*/
23541 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23542 {
23543 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23544 {
23545 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023546 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023547 return i;
23548 }
23549 }
23550
Jeff Johnsone7245742012-09-05 17:12:55 -070023551 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023552}/*WDI_FindAssocSessionByBSSIdx*/
23553
23554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023555 @brief Helper routine used to find a session based on the BSSID
23556
23557
23558 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023559 ucBSSIdx: BSS Index of the session
23560 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023561
Jeff Johnson295189b2012-06-20 16:38:30 -070023562 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023563 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023564*/
23565wpt_uint8
23566WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023567(
Jeff Johnson295189b2012-06-20 16:38:30 -070023568 WDI_ControlBlockType* pWDICtx,
23569 wpt_uint16 usIdx,
23570 WDI_BSSSessionType** ppSession
23571)
23572{
23573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23574
23575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023577 -------------------------------------------------------------------------*/
23578 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23579 {
23580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023581 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023582 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023583 }
23584
23585 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023587
23588 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023589
Jeff Johnson295189b2012-06-20 16:38:30 -070023590}/*WDI_FindAssocSessionByBSSIdx*/
23591
23592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023593 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023595
23596
23597 @param pWDICtx: pointer to the WLAN DAL context
23598 pSession: pointer to the session (if found)
23599
Jeff Johnson295189b2012-06-20 16:38:30 -070023600 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023601 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023602*/
23603wpt_uint8
23604WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023605(
Jeff Johnson295189b2012-06-20 16:38:30 -070023606 WDI_ControlBlockType* pWDICtx,
23607 WDI_BSSSessionType** ppSession
23608)
23609{
Jeff Johnsone7245742012-09-05 17:12:55 -070023610 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023613 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 -------------------------------------------------------------------------*/
23615 if ( NULL == ppSession )
23616 {
23617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023618 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 }
23621
Jeff Johnsone7245742012-09-05 17:12:55 -070023622 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023623
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 /*------------------------------------------------------------------------
23625 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 ------------------------------------------------------------------------*/
23627 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23628 {
23629 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23630 {
23631 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023632 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 return i;
23634 }
23635 }
23636
Jeff Johnsone7245742012-09-05 17:12:55 -070023637 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023638}/*WDI_FindEmptySession*/
23639
23640
23641/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023644
23645
23646 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023647 macBSSID: pointer to BSSID. If NULL, get all the session.
23648 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23649 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23650 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023651 @see
23652 @return Number of sessions in use
23653*/
23654wpt_uint8
23655WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023656(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023657 WDI_ControlBlockType* pWDICtx,
23658 wpt_macAddr macBSSID,
23659 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023660)
23661{
Jeff Johnsone7245742012-09-05 17:12:55 -070023662 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023664
23665 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023666 Count all sessions in use
23667 ------------------------------------------------------------------------*/
23668 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23669 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023670 if ( macBSSID && skipBSSID &&
23671 (eWLAN_PAL_TRUE ==
23672 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23673 WDI_MAC_ADDR_LEN)))
23674 {
23675 continue;
23676 }
23677 else if ( pWDICtx->aBSSSessions[i].bInUse )
23678 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023680 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023681 }
23682
Jeff Johnsone7245742012-09-05 17:12:55 -070023683 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023684}/*WDI_GetActiveSessionsCount*/
23685
23686/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023687 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023688 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023689
23690
23691 @param pWDICtx: pointer to the WLAN DAL context
23692 pSession: pointer to the session (if found)
23693
Jeff Johnson295189b2012-06-20 16:38:30 -070023694 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023695 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023696*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023697void
Jeff Johnson295189b2012-06-20 16:38:30 -070023698WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023699(
Jeff Johnson295189b2012-06-20 16:38:30 -070023700 WDI_ControlBlockType* pWDICtx,
23701 WDI_BSSSessionType* ppSession
23702)
23703{
23704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023705 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023706 -------------------------------------------------------------------------*/
23707 if ( NULL == ppSession )
23708 {
23709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023710 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023711 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023712 }
23713
Jeff Johnsone7245742012-09-05 17:12:55 -070023714 /*------------------------------------------------------------------------
23715 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023716 ------------------------------------------------------------------------*/
23717 wpal_list_destroy(&ppSession->wptPendingQueue);
23718 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023719 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23720 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23722 wpal_list_init(&ppSession->wptPendingQueue);
23723
23724}/*WDI_DeleteSession*/
23725
23726/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023727 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023728 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023729 @param
23730
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 WDI_AddStaParams: - pointer to the WDI Add STA params
23732 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023733
23734 @see
23735 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023736*/
23737void
23738WDI_AddBcastSTAtoSTATable
23739(
23740 WDI_ControlBlockType* pWDICtx,
23741 WDI_AddStaParams * staParams,
23742 wpt_uint16 usBcastStaIdx
23743)
23744{
23745 WDI_AddStaParams wdiAddSTAParam = {0};
23746 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23748
23749 /*---------------------------------------------------------------------
23750 Sanity check
23751 ---------------------------------------------------------------------*/
23752 if ( NULL == staParams )
23753 {
23754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023756
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 }
23759
23760 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23761 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23762 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23763 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23764 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23765 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23766 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23767 WDI_MAC_ADDR_LEN );
23768 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23769 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23770 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23771 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23772 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23773 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23774 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023775
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23777}
23778
23779/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023780 @brief NV blob will be divided into fragments of size 4kb and
23781 Sent to HAL
23782
23783 @param pWDICtx: pointer to the WLAN DAL context
23784 pEventData: pointer to the event information structure
23785
Jeff Johnson295189b2012-06-20 16:38:30 -070023786 @see
23787 @return Result of the function call
23788 */
23789
23790WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023791(
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 WDI_ControlBlockType* pWDICtx,
23793 WDI_EventInfoType* pEventData
23794)
23795{
23796
23797 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23798 wpt_uint8* pSendBuffer = NULL;
23799 wpt_uint16 usDataOffset = 0;
23800 wpt_uint16 usSendSize = 0;
23801 wpt_uint16 usCurrentFragmentSize =0;
23802 wpt_uint8* pSrcBuffer = NULL;
23803 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23804 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23805
23806 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23807 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23808 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23809
Jeff Johnsone7245742012-09-05 17:12:55 -070023810 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023811 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23812
23813 /* Update the current Fragment Number */
23814 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23815
23816 /*Update the HAL REQ structure */
23817 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23818 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23819 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23820
23821 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023822 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 image will be sent to HAL*/
23824
Jeff Johnsone7245742012-09-05 17:12:55 -070023825 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023826 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023828 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023829 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23831 usCurrentFragmentSize = FRAGMENT_SIZE;
23832
23833 /*Update the HAL REQ structure */
23834 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23835 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23836
23837 }
23838 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023839 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023840 usCurrentFragmentSize = FRAGMENT_SIZE;
23841
23842 /*Update the HAL REQ structure */
23843 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23844 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23845 }
23846
23847 /*-----------------------------------------------------------------------
23848 Get message buffer
23849 -----------------------------------------------------------------------*/
23850 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23851 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23852 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023853 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023854 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23855 {
23856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023857 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023858 pEventData, pwdiNvDownloadReqParams);
23859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023861 }
23862
23863 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023864 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023865 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23866
23867 /* Appending the NV image fragment */
23868 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23869 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23870 usCurrentFragmentSize);
23871
23872 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023873 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023874
Jeff Johnsone7245742012-09-05 17:12:55 -070023875 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23876 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023877 WDI_NV_DOWNLOAD_RESP);
23878
23879}
Jeff Johnsone7245742012-09-05 17:12:55 -070023880/*============================================================================
23881 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 ============================================================================*/
23883/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023884 @brief Helper routine used to find a session based on the BSSID
23885 @param pContext: pointer to the WLAN DAL context
23886 @param pDPContext: pointer to the Datapath context
23887
Jeff Johnson295189b2012-06-20 16:38:30 -070023888 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023890*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023891WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023892WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23893{
23894 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23895
23896 pCB->pDPContext = pDPContext;
23897 return;
23898}
23899
23900/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023901 @brief Helper routine used to find a session based on the BSSID
23902
23903
23904 @param pContext: pointer to the WLAN DAL context
23905
Jeff Johnson295189b2012-06-20 16:38:30 -070023906 @see
23907 @return pointer to Datapath context
23908*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023909WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023910WDI_DS_GetDatapathContext (void *pContext)
23911{
23912 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23913 return pCB->pDPContext;
23914}
23915/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023916 @brief Helper routine used to find a session based on the BSSID
23917
23918
23919 @param pContext: pointer to the WLAN DAL context
23920 @param pDTDriverContext: pointer to the Transport Driver context
23921
Jeff Johnson295189b2012-06-20 16:38:30 -070023922 @see
23923 @return void
23924*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023925WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023926WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23927{
23928 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23929
23930 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932}
23933
23934/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 @brief Helper routine used to find a session based on the BSSID
23936
23937
23938 @param pWDICtx: pointer to the WLAN DAL context
23939
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023942*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023943WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023944WDT_GetTransportDriverContext (void *pContext)
23945{
23946 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023948}
23949
Jeff Johnsone7245742012-09-05 17:12:55 -070023950/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023951 Helper inline converters
23952 ============================================================================*/
23953/*Convert WDI driver type into HAL driver type*/
23954WPT_STATIC WPT_INLINE WDI_Status
23955WDI_HAL_2_WDI_STATUS
23956(
23957 eHalStatus halStatus
23958)
23959{
Jeff Johnsone7245742012-09-05 17:12:55 -070023960 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023961 the chances of getting inlined*/
23962 switch( halStatus )
23963 {
23964 case eHAL_STATUS_SUCCESS:
23965 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23966 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23967 return WDI_STATUS_SUCCESS;
23968 case eHAL_STATUS_FAILURE:
23969 return WDI_STATUS_E_FAILURE;
23970 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023971 return WDI_STATUS_MEM_FAILURE;
23972 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023973 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023974 default:
23975 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23976 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023977
Jeff Johnsone7245742012-09-05 17:12:55 -070023978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023979}/*WDI_HAL_2_WDI_STATUS*/
23980
23981/*Convert WDI request type into HAL request type*/
23982WPT_STATIC WPT_INLINE tHalHostMsgType
23983WDI_2_HAL_REQ_TYPE
23984(
23985 WDI_RequestEnumType wdiReqType
23986)
23987{
Jeff Johnsone7245742012-09-05 17:12:55 -070023988 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023989 the chances of getting inlined*/
23990 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023991 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023992 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023993 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023994 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023995 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023996 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023997 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023998 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023999 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024001 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024002 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024003 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024004 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024005 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024007 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024008 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024009 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024010 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024011 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024012 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024013 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024014 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024018 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024019 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024020 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024021 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024024 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 return WLAN_HAL_RMV_STAKEY_REQ;
24027 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024028 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024032 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024033 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024034 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024035 case WDI_DEL_BA_REQ:
24036 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024037#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 case WDI_TSM_STATS_REQ:
24039 return WLAN_HAL_TSM_STATS_REQ;
24040#endif
24041 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024044 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024045 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024046 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024047 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024048 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024049 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024050 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024051 case WDI_ADD_BA_SESSION_REQ:
24052 return WLAN_HAL_ADD_BA_SESSION_REQ;
24053 case WDI_TRIGGER_BA_REQ:
24054 return WLAN_HAL_TRIGGER_BA_REQ;
24055 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024056 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024058 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024059 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24060 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24061 case WDI_SET_MAX_TX_POWER_REQ:
24062 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024063 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24064 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024065 case WDI_SET_TX_POWER_REQ:
24066 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024067 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24068 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024069#ifdef FEATURE_WLAN_TDLS
24070 case WDI_TDLS_LINK_ESTABLISH_REQ:
24071 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024072 case WDI_TDLS_CHAN_SWITCH_REQ:
24073 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024074#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024075 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024076 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024077 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024078 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024079 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024080 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024081 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024082 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024084 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024085 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024086 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024087 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024088 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024089 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024090 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024091 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024092 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024093 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024094 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024095 case WDI_REM_BEACON_FILTER_REQ:
24096 return WLAN_HAL_REM_BCN_FILTER_REQ;
24097 case WDI_SET_RSSI_THRESHOLDS_REQ:
24098 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24099 case WDI_HOST_OFFLOAD_REQ:
24100 return WLAN_HAL_HOST_OFFLOAD_REQ;
24101 case WDI_WOWL_ADD_BC_PTRN_REQ:
24102 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24103 case WDI_WOWL_DEL_BC_PTRN_REQ:
24104 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24105 case WDI_WOWL_ENTER_REQ:
24106 return WLAN_HAL_ENTER_WOWL_REQ;
24107 case WDI_WOWL_EXIT_REQ:
24108 return WLAN_HAL_EXIT_WOWL_REQ;
24109 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24110 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24111 case WDI_NV_DOWNLOAD_REQ:
24112 return WLAN_HAL_DOWNLOAD_NV_REQ;
24113 case WDI_FLUSH_AC_REQ:
24114 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24115 case WDI_BTAMP_EVENT_REQ:
24116 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24117#ifdef WLAN_FEATURE_VOWIFI_11R
24118 case WDI_AGGR_ADD_TS_REQ:
24119 return WLAN_HAL_AGGR_ADD_TS_REQ;
24120#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024121 case WDI_FTM_CMD_REQ:
24122 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 case WDI_ADD_STA_SELF_REQ:
24124 return WLAN_HAL_ADD_STA_SELF_REQ;
24125 case WDI_DEL_STA_SELF_REQ:
24126 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024127#ifdef FEATURE_OEM_DATA_SUPPORT
24128 case WDI_START_OEM_DATA_REQ:
24129 return WLAN_HAL_START_OEM_DATA_REQ;
24130#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024131 case WDI_HOST_RESUME_REQ:
24132 return WLAN_HAL_HOST_RESUME_REQ;
24133 case WDI_HOST_SUSPEND_IND:
24134 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024135 case WDI_TRAFFIC_STATS_IND:
24136 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024137#ifdef WLAN_FEATURE_11W
24138 case WDI_EXCLUDE_UNENCRYPTED_IND:
24139 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24140#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024141 case WDI_KEEP_ALIVE_REQ:
24142 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024143#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024144 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24145 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024146#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024147#ifdef FEATURE_WLAN_SCAN_PNO
24148 case WDI_SET_PREF_NETWORK_REQ:
24149 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24150 case WDI_SET_RSSI_FILTER_REQ:
24151 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24152 case WDI_UPDATE_SCAN_PARAMS_REQ:
24153 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24154#endif // FEATURE_WLAN_SCAN_PNO
24155 case WDI_SET_TX_PER_TRACKING_REQ:
24156 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24157#ifdef WLAN_FEATURE_PACKET_FILTERING
24158 case WDI_8023_MULTICAST_LIST_REQ:
24159 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24160 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024161 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024162 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24163 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24164 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24165 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24166#endif // WLAN_FEATURE_PACKET_FILTERING
24167 case WDI_HAL_DUMP_CMD_REQ:
24168 return WLAN_HAL_DUMP_COMMAND_REQ;
24169#ifdef WLAN_FEATURE_GTK_OFFLOAD
24170 case WDI_GTK_OFFLOAD_REQ:
24171 return WLAN_HAL_GTK_OFFLOAD_REQ;
24172 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24173 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24174#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24175
24176 case WDI_INIT_SCAN_CON_REQ:
24177 return WLAN_HAL_INIT_SCAN_CON_REQ;
24178 case WDI_SET_POWER_PARAMS_REQ:
24179 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24180 case WDI_SET_TM_LEVEL_REQ:
24181 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24182 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24183 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024184#ifdef WLAN_FEATURE_11AC
24185 case WDI_UPDATE_VHT_OP_MODE_REQ:
24186 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24187#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024188 case WDI_GET_ROAM_RSSI_REQ:
24189 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024190 case WDI_DHCP_START_IND:
24191 return WLAN_HAL_DHCP_START_IND;
24192 case WDI_DHCP_STOP_IND:
24193 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024194#ifdef FEATURE_WLAN_LPHB
24195 case WDI_LPHB_CFG_REQ:
24196 return WLAN_HAL_LPHB_CFG_REQ;
24197#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024198 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24199 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24200 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24201 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24202
Rajeev79dbe4c2013-10-05 11:03:42 +053024203#ifdef FEATURE_WLAN_BATCH_SCAN
24204 case WDI_SET_BATCH_SCAN_REQ:
24205 return WLAN_HAL_BATCHSCAN_SET_REQ;
24206 case WDI_STOP_BATCH_SCAN_IND:
24207 return WLAN_HAL_BATCHSCAN_STOP_IND;
24208 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24209 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24210#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024211 case WDI_RATE_UPDATE_IND:
24212 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024213 case WDI_START_HT40_OBSS_SCAN_IND:
24214 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24215 case WDI_STOP_HT40_OBSS_SCAN_IND:
24216 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024217 case WDI_UPDATE_CHAN_REQ:
24218 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024219 case WDI_CH_SWITCH_REQ_V1:
24220 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024221 case WDI_GET_BCN_MISS_RATE_REQ:
24222 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024223
24224#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24225 case WDI_LL_STATS_SET_REQ:
24226 return WLAN_HAL_LL_SET_STATS_REQ;
24227 case WDI_LL_STATS_GET_REQ:
24228 return WLAN_HAL_LL_GET_STATS_REQ;
24229 case WDI_LL_STATS_CLEAR_REQ:
24230 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24231#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024232#ifdef WLAN_FEATURE_EXTSCAN
24233 case WDI_EXTSCAN_START_REQ:
24234 return WLAN_HAL_EXT_SCAN_START_REQ;
24235 case WDI_EXTSCAN_STOP_REQ:
24236 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24237 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24238 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24239 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24240 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24241 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24242 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24243 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24244 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
24245 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
24246 return WLAN_HAL_SIG_RSSI_SET_REQ;
24247 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
24248 return WLAN_HAL_SIG_RSSI_RESET_REQ;
24249#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024250 case WDI_SPOOF_MAC_ADDR_REQ:
24251 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024252 case WDI_GET_FW_STATS_REQ:
24253 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024254 case WDI_ENCRYPT_MSG_REQ:
24255 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024256 case WDI_FW_LOGGING_INIT_REQ:
24257 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024258 case WDI_GET_FRAME_LOG_REQ:
24259 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024260 case WDI_NAN_REQUEST:
24261 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024262 case WDI_SET_RTS_CTS_HTVHT_IND:
24263 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024264 case WDI_MON_START_REQ:
24265 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24266 case WDI_MON_STOP_REQ:
24267 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024268 case WDI_FW_LOGGING_DXE_DONE_IND:
24269 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024270 case WDI_FATAL_EVENT_LOGGING_REQ:
24271 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
24272
Jeff Johnson295189b2012-06-20 16:38:30 -070024273 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024274 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024276
Jeff Johnson295189b2012-06-20 16:38:30 -070024277}/*WDI_2_HAL_REQ_TYPE*/
24278
24279/*Convert WDI response type into HAL response type*/
24280WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24281HAL_2_WDI_RSP_TYPE
24282(
24283 tHalHostMsgType halMsg
24284)
24285{
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024287 the chances of getting inlined*/
24288 switch( halMsg )
24289 {
24290 case WLAN_HAL_START_RSP:
24291 return WDI_START_RESP;
24292 case WLAN_HAL_STOP_RSP:
24293 return WDI_STOP_RESP;
24294 case WLAN_HAL_INIT_SCAN_RSP:
24295 return WDI_INIT_SCAN_RESP;
24296 case WLAN_HAL_START_SCAN_RSP:
24297 return WDI_START_SCAN_RESP;
24298 case WLAN_HAL_END_SCAN_RSP:
24299 return WDI_END_SCAN_RESP;
24300 case WLAN_HAL_FINISH_SCAN_RSP:
24301 return WDI_FINISH_SCAN_RESP;
24302 case WLAN_HAL_CONFIG_STA_RSP:
24303 return WDI_CONFIG_STA_RESP;
24304 case WLAN_HAL_DELETE_STA_RSP:
24305 return WDI_DEL_STA_RESP;
24306 case WLAN_HAL_CONFIG_BSS_RSP:
24307 return WDI_CONFIG_BSS_RESP;
24308 case WLAN_HAL_DELETE_BSS_RSP:
24309 return WDI_DEL_BSS_RESP;
24310 case WLAN_HAL_JOIN_RSP:
24311 return WDI_JOIN_RESP;
24312 case WLAN_HAL_POST_ASSOC_RSP:
24313 return WDI_POST_ASSOC_RESP;
24314 case WLAN_HAL_SET_BSSKEY_RSP:
24315 return WDI_SET_BSS_KEY_RESP;
24316 case WLAN_HAL_SET_STAKEY_RSP:
24317 return WDI_SET_STA_KEY_RESP;
24318 case WLAN_HAL_RMV_BSSKEY_RSP:
24319 return WDI_RMV_BSS_KEY_RESP;
24320 case WLAN_HAL_RMV_STAKEY_RSP:
24321 return WDI_RMV_STA_KEY_RESP;
24322 case WLAN_HAL_SET_BCASTKEY_RSP:
24323 return WDI_SET_STA_BCAST_KEY_RESP;
24324 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24325 // return WDI_RMV_STA_BCAST_KEY_RESP;
24326 case WLAN_HAL_ADD_TS_RSP:
24327 return WDI_ADD_TS_RESP;
24328 case WLAN_HAL_DEL_TS_RSP:
24329 return WDI_DEL_TS_RESP;
24330 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24331 return WDI_UPD_EDCA_PRMS_RESP;
24332 case WLAN_HAL_ADD_BA_RSP:
24333 return WDI_ADD_BA_RESP;
24334 case WLAN_HAL_DEL_BA_RSP:
24335 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024336#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 case WLAN_HAL_TSM_STATS_RSP:
24338 return WDI_TSM_STATS_RESP;
24339#endif
24340 case WLAN_HAL_CH_SWITCH_RSP:
24341 return WDI_CH_SWITCH_RESP;
24342 case WLAN_HAL_SET_LINK_ST_RSP:
24343 return WDI_SET_LINK_ST_RESP;
24344 case WLAN_HAL_GET_STATS_RSP:
24345 return WDI_GET_STATS_RESP;
24346 case WLAN_HAL_UPDATE_CFG_RSP:
24347 return WDI_UPDATE_CFG_RESP;
24348 case WLAN_HAL_ADD_BA_SESSION_RSP:
24349 return WDI_ADD_BA_SESSION_RESP;
24350 case WLAN_HAL_TRIGGER_BA_RSP:
24351 return WDI_TRIGGER_BA_RESP;
24352 case WLAN_HAL_UPDATE_BEACON_RSP:
24353 return WDI_UPD_BCON_PRMS_RESP;
24354 case WLAN_HAL_SEND_BEACON_RSP:
24355 return WDI_SND_BCON_RESP;
24356 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24357 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24358 /*Indications*/
24359 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24360 return WDI_HAL_RSSI_NOTIFICATION_IND;
24361 case WLAN_HAL_MISSED_BEACON_IND:
24362 return WDI_HAL_MISSED_BEACON_IND;
24363 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24364 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24365 case WLAN_HAL_MIC_FAILURE_IND:
24366 return WDI_HAL_MIC_FAILURE_IND;
24367 case WLAN_HAL_FATAL_ERROR_IND:
24368 return WDI_HAL_FATAL_ERROR_IND;
24369 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24370 return WDI_HAL_DEL_STA_IND;
24371 case WLAN_HAL_COEX_IND:
24372 return WDI_HAL_COEX_IND;
24373 case WLAN_HAL_OTA_TX_COMPL_IND:
24374 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024375 case WLAN_HAL_P2P_NOA_ATTR_IND:
24376 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024377 case WLAN_HAL_P2P_NOA_START_IND:
24378 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024379 case WLAN_HAL_DEL_BA_IND:
24380 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 case WLAN_HAL_TX_PER_HIT_IND:
24382 return WDI_HAL_TX_PER_HIT_IND;
24383 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24384 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024385 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24386 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024387 case WLAN_HAL_SET_TX_POWER_RSP:
24388 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 case WLAN_HAL_SET_P2P_GONOA_RSP:
24390 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024391#ifdef FEATURE_WLAN_TDLS
24392 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24393 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024394 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24395 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024396 case WLAN_HAL_TDLS_IND:
24397 return WDI_HAL_TDLS_IND;
24398#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024399 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024400 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024401 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024402 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024404 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024406 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024407 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024408 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024409 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024411 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024412 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024414 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024415 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024416 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24418 return WDI_SET_BEACON_FILTER_RESP;
24419 case WLAN_HAL_REM_BCN_FILTER_RSP:
24420 return WDI_REM_BEACON_FILTER_RESP;
24421 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24422 return WDI_SET_RSSI_THRESHOLDS_RESP;
24423 case WLAN_HAL_HOST_OFFLOAD_RSP:
24424 return WDI_HOST_OFFLOAD_RESP;
24425 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24426 return WDI_WOWL_ADD_BC_PTRN_RESP;
24427 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24428 return WDI_WOWL_DEL_BC_PTRN_RESP;
24429 case WLAN_HAL_ENTER_WOWL_RSP:
24430 return WDI_WOWL_ENTER_RESP;
24431 case WLAN_HAL_EXIT_WOWL_RSP:
24432 return WDI_WOWL_EXIT_RESP;
24433 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24434 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24435 case WLAN_HAL_DOWNLOAD_NV_RSP:
24436 return WDI_NV_DOWNLOAD_RESP;
24437 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24438 return WDI_FLUSH_AC_RESP;
24439 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24440 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024441 case WLAN_HAL_PROCESS_PTT_RSP:
24442 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 case WLAN_HAL_ADD_STA_SELF_RSP:
24444 return WDI_ADD_STA_SELF_RESP;
24445case WLAN_HAL_DEL_STA_SELF_RSP:
24446 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024447#ifdef FEATURE_OEM_DATA_SUPPORT
24448 case WLAN_HAL_START_OEM_DATA_RSP:
24449 return WDI_START_OEM_DATA_RESP;
24450#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024451 case WLAN_HAL_HOST_RESUME_RSP:
24452 return WDI_HOST_RESUME_RESP;
24453 case WLAN_HAL_KEEP_ALIVE_RSP:
24454 return WDI_KEEP_ALIVE_RESP;
24455#ifdef FEATURE_WLAN_SCAN_PNO
24456 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24457 return WDI_SET_PREF_NETWORK_RESP;
24458 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024459 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024460 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24461 return WDI_UPDATE_SCAN_PARAMS_RESP;
24462 case WLAN_HAL_PREF_NETW_FOUND_IND:
24463 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24464#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024465#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024466 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24467 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024468#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024469 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24470 return WDI_SET_TX_PER_TRACKING_RESP;
24471#ifdef WLAN_FEATURE_PACKET_FILTERING
24472 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24473 return WDI_8023_MULTICAST_LIST_RESP;
24474 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24475 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24476 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24477 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24478 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24479 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24480#endif // WLAN_FEATURE_PACKET_FILTERING
24481
24482 case WLAN_HAL_DUMP_COMMAND_RSP:
24483 return WDI_HAL_DUMP_CMD_RESP;
24484 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24485 return WDI_SET_POWER_PARAMS_RESP;
24486#ifdef WLAN_FEATURE_VOWIFI_11R
24487 case WLAN_HAL_AGGR_ADD_TS_RSP:
24488 return WDI_AGGR_ADD_TS_RESP;
24489#endif
24490
24491#ifdef WLAN_FEATURE_GTK_OFFLOAD
24492 case WLAN_HAL_GTK_OFFLOAD_RSP:
24493 return WDI_GTK_OFFLOAD_RESP;
24494 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24495 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24496#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24497#ifdef WLAN_WAKEUP_EVENTS
24498 case WLAN_HAL_WAKE_REASON_IND:
24499 return WDI_HAL_WAKE_REASON_IND;
24500#endif // WLAN_WAKEUP_EVENTS
24501
24502 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24503 return WDI_SET_TM_LEVEL_RESP;
24504 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24505 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024506#ifdef WLAN_FEATURE_11AC
24507 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24508 return WDI_UPDATE_VHT_OP_MODE_RESP;
24509#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024510#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024511 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24512 return WDI_GET_ROAM_RSSI_RESP;
24513#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024514
Leo Chang9056f462013-08-01 19:21:11 -070024515#ifdef FEATURE_WLAN_LPHB
24516 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024517 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024518 case WLAN_HAL_LPHB_CFG_RSP:
24519 return WDI_LPHB_CFG_RESP;
24520#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024521
24522 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24523 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024524 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24525 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024526
Rajeev79dbe4c2013-10-05 11:03:42 +053024527#ifdef FEATURE_WLAN_BATCH_SCAN
24528 case WLAN_HAL_BATCHSCAN_SET_RSP:
24529 return WDI_SET_BATCH_SCAN_RESP;
24530 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24531 return WDI_BATCHSCAN_RESULT_IND;
24532#endif // FEATURE_WLAN_BATCH_SCAN
24533
Leo Chang0b0e45a2013-12-15 15:18:55 -080024534#ifdef FEATURE_WLAN_CH_AVOID
24535 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24536 return WDI_HAL_CH_AVOID_IND;
24537#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024538 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24539 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024540 case WLAN_HAL_PRINT_REG_INFO_IND:
24541 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024542 case WLAN_HAL_CH_SWITCH_V1_RSP:
24543 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024544 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24545 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024546#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24547 case WLAN_HAL_LL_SET_STATS_RSP:
24548 return WDI_LL_STATS_SET_RSP;
24549 case WLAN_HAL_LL_GET_STATS_RSP:
24550 return WDI_LL_STATS_GET_RSP;
24551 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24552 return WDI_LL_STATS_CLEAR_RSP;
24553 case WLAN_HAL_LL_NOTIFY_STATS:
24554 return WDI_HAL_LL_STATS_RESULTS_IND;
24555#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024556#ifdef WLAN_FEATURE_EXTSCAN
24557 case WLAN_HAL_EXT_SCAN_START_RSP:
24558 return WDI_EXTSCAN_START_RSP;
24559 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24560 return WDI_EXTSCAN_STOP_RSP;
24561 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24562 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24563 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24564 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24565 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24566 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24567 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24568 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24569 case WLAN_HAL_SIG_RSSI_SET_RSP:
24570 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24571 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24572 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24573 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24574 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24575 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24576 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24577 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24578 return WDI_HAL_EXTSCAN_RESULT_IND;
24579 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24580 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24581 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24582 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24583#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024584 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24585 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024586 case WLAN_HAL_FW_STATS_RSP:
24587 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024588 case WLAN_HAL_ENCRYPT_DATA_RSP:
24589 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024590 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24591 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024592 case WLAN_HAL_GET_FRAME_LOG_RSP:
24593 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024594 case WLAN_HAL_NAN_RSP:
24595 return WDI_NAN_RESPONSE;
24596 case WLAN_HAL_NAN_EVT:
24597 return WDI_HAL_NAN_EVENT;
Katya Nigamf0511f62015-05-05 16:40:57 +053024598 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24599 return WDI_MON_START_RSP;
24600 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24601 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024602 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24603 return WDI_FATAL_EVENT_LOGGING_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024604 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024605 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024606 }
24607
24608}/*HAL_2_WDI_RSP_TYPE*/
24609
24610
24611/*Convert WDI driver type into HAL driver type*/
24612WPT_STATIC WPT_INLINE tDriverType
24613WDI_2_HAL_DRV_TYPE
24614(
24615 WDI_DriverType wdiDriverType
24616)
24617{
Jeff Johnsone7245742012-09-05 17:12:55 -070024618 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024619 the chances of getting inlined*/
24620 switch( wdiDriverType )
24621 {
24622 case WDI_DRIVER_TYPE_PRODUCTION:
24623 return eDRIVER_TYPE_PRODUCTION;
24624 case WDI_DRIVER_TYPE_MFG:
24625 return eDRIVER_TYPE_MFG;
24626 case WDI_DRIVER_TYPE_DVT:
24627 return eDRIVER_TYPE_DVT;
24628 }
24629
Jeff Johnsone7245742012-09-05 17:12:55 -070024630 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024631}/*WDI_2_HAL_DRV_TYPE*/
24632
24633
24634/*Convert WDI stop reason into HAL stop reason*/
24635WPT_STATIC WPT_INLINE tHalStopType
24636WDI_2_HAL_STOP_REASON
24637(
24638 WDI_StopType wdiDriverType
24639)
24640{
Jeff Johnsone7245742012-09-05 17:12:55 -070024641 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024642 the chances of getting inlined*/
24643 switch( wdiDriverType )
24644 {
24645 case WDI_STOP_TYPE_SYS_RESET:
24646 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024647 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24648 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024649 case WDI_STOP_TYPE_RF_KILL:
24650 return HAL_STOP_TYPE_RF_KILL;
24651 }
24652
Jeff Johnsone7245742012-09-05 17:12:55 -070024653 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024654}/*WDI_2_HAL_STOP_REASON*/
24655
24656
24657/*Convert WDI scan mode type into HAL scan mode type*/
24658WPT_STATIC WPT_INLINE eHalSysMode
24659WDI_2_HAL_SCAN_MODE
24660(
24661 WDI_ScanMode wdiScanMode
24662)
24663{
Jeff Johnsone7245742012-09-05 17:12:55 -070024664 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024665 the chances of getting inlined*/
24666 switch( wdiScanMode )
24667 {
24668 case WDI_SCAN_MODE_NORMAL:
24669 return eHAL_SYS_MODE_NORMAL;
24670 case WDI_SCAN_MODE_LEARN:
24671 return eHAL_SYS_MODE_LEARN;
24672 case WDI_SCAN_MODE_SCAN:
24673 return eHAL_SYS_MODE_SCAN;
24674 case WDI_SCAN_MODE_PROMISC:
24675 return eHAL_SYS_MODE_PROMISC;
24676 case WDI_SCAN_MODE_SUSPEND_LINK:
24677 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024678 case WDI_SCAN_MODE_ROAM_SCAN:
24679 return eHAL_SYS_MODE_ROAM_SCAN;
24680 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24681 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 }
24683
Jeff Johnsone7245742012-09-05 17:12:55 -070024684 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024685}/*WDI_2_HAL_SCAN_MODE*/
24686
24687/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024688WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024689WDI_2_HAL_SEC_CH_OFFSET
24690(
24691 WDI_HTSecondaryChannelOffset wdiSecChOffset
24692)
24693{
Jeff Johnsone7245742012-09-05 17:12:55 -070024694 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024695 the chances of getting inlined*/
24696 switch( wdiSecChOffset )
24697 {
24698 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024699 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024700 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024701 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024702 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24704#ifdef WLAN_FEATURE_11AC
24705 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24706 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24707 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24708 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24709 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24710 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24711 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24712 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24713 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24714 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24715 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24716 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24717 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24718 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24719#endif
24720 default:
24721 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024722 }
24723
Jeff Johnsone7245742012-09-05 17:12:55 -070024724 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024725}/*WDI_2_HAL_SEC_CH_OFFSET*/
24726
24727/*Convert WDI BSS type into HAL BSS type*/
24728WPT_STATIC WPT_INLINE tSirBssType
24729WDI_2_HAL_BSS_TYPE
24730(
24731 WDI_BssType wdiBSSType
24732)
24733{
Jeff Johnsone7245742012-09-05 17:12:55 -070024734 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024735 the chances of getting inlined*/
24736 switch( wdiBSSType )
24737 {
24738 case WDI_INFRASTRUCTURE_MODE:
24739 return eSIR_INFRASTRUCTURE_MODE;
24740 case WDI_INFRA_AP_MODE:
24741 return eSIR_INFRA_AP_MODE;
24742 case WDI_IBSS_MODE:
24743 return eSIR_IBSS_MODE;
24744 case WDI_BTAMP_STA_MODE:
24745 return eSIR_BTAMP_STA_MODE;
24746 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024747 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 case WDI_BSS_AUTO_MODE:
24749 return eSIR_AUTO_MODE;
24750 }
24751
Jeff Johnsone7245742012-09-05 17:12:55 -070024752 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024753}/*WDI_2_HAL_BSS_TYPE*/
24754
24755/*Convert WDI NW type into HAL NW type*/
24756WPT_STATIC WPT_INLINE tSirNwType
24757WDI_2_HAL_NW_TYPE
24758(
24759 WDI_NwType wdiNWType
24760)
24761{
Jeff Johnsone7245742012-09-05 17:12:55 -070024762 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024763 the chances of getting inlined*/
24764 switch( wdiNWType )
24765 {
24766 case WDI_11A_NW_TYPE:
24767 return eSIR_11A_NW_TYPE;
24768 case WDI_11B_NW_TYPE:
24769 return eSIR_11B_NW_TYPE;
24770 case WDI_11G_NW_TYPE:
24771 return eSIR_11G_NW_TYPE;
24772 case WDI_11N_NW_TYPE:
24773 return eSIR_11N_NW_TYPE;
24774 }
24775
Jeff Johnsone7245742012-09-05 17:12:55 -070024776 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024777}/*WDI_2_HAL_NW_TYPE*/
24778
24779/*Convert WDI chanel bonding type into HAL cb type*/
24780WPT_STATIC WPT_INLINE ePhyChanBondState
24781WDI_2_HAL_CB_STATE
24782(
24783 WDI_PhyChanBondState wdiCbState
24784)
24785{
Jeff Johnsone7245742012-09-05 17:12:55 -070024786 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024787 the chances of getting inlined*/
24788 switch ( wdiCbState )
24789 {
24790 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24791 return PHY_SINGLE_CHANNEL_CENTERED;
24792 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24793 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24794 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24795 return PHY_DOUBLE_CHANNEL_CENTERED;
24796 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24797 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024798#ifdef WLAN_FEATURE_11AC
24799 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24800 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24801 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24802 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24803 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24804 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24805 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24806 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24807 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24808 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24809 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24810 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24811 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24812 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24813#endif
24814 case WDI_MAX_CB_STATE:
24815 default:
24816 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024817 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024818
Jeff Johnson295189b2012-06-20 16:38:30 -070024819 return PHY_CHANNEL_BONDING_STATE_MAX;
24820}/*WDI_2_HAL_CB_STATE*/
24821
24822/*Convert WDI chanel bonding type into HAL cb type*/
24823WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24824WDI_2_HAL_HT_OPER_MODE
24825(
24826 WDI_HTOperatingMode wdiHTOperMode
24827)
24828{
Jeff Johnsone7245742012-09-05 17:12:55 -070024829 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024830 the chances of getting inlined*/
24831 switch ( wdiHTOperMode )
24832 {
24833 case WDI_HT_OP_MODE_PURE:
24834 return eSIR_HT_OP_MODE_PURE;
24835 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24836 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24837 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24838 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24839 case WDI_HT_OP_MODE_MIXED:
24840 return eSIR_HT_OP_MODE_MIXED;
24841 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024842
Jeff Johnson295189b2012-06-20 16:38:30 -070024843 return eSIR_HT_OP_MODE_MAX;
24844}/*WDI_2_HAL_HT_OPER_MODE*/
24845
24846/*Convert WDI mimo PS type into HAL mimo PS type*/
24847WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24848WDI_2_HAL_MIMO_PS
24849(
24850 WDI_HTMIMOPowerSaveState wdiHTOperMode
24851)
24852{
Jeff Johnsone7245742012-09-05 17:12:55 -070024853 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024854 the chances of getting inlined*/
24855 switch ( wdiHTOperMode )
24856 {
24857 case WDI_HT_MIMO_PS_STATIC:
24858 return eSIR_HT_MIMO_PS_STATIC;
24859 case WDI_HT_MIMO_PS_DYNAMIC:
24860 return eSIR_HT_MIMO_PS_DYNAMIC;
24861 case WDI_HT_MIMO_PS_NA:
24862 return eSIR_HT_MIMO_PS_NA;
24863 case WDI_HT_MIMO_PS_NO_LIMIT:
24864 return eSIR_HT_MIMO_PS_NO_LIMIT;
24865 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024866
Jeff Johnson295189b2012-06-20 16:38:30 -070024867 return eSIR_HT_MIMO_PS_MAX;
24868}/*WDI_2_HAL_MIMO_PS*/
24869
24870/*Convert WDI ENC type into HAL ENC type*/
24871WPT_STATIC WPT_INLINE tAniEdType
24872WDI_2_HAL_ENC_TYPE
24873(
24874 WDI_EncryptType wdiEncType
24875)
24876{
Jeff Johnsone7245742012-09-05 17:12:55 -070024877 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024878 the chances of getting inlined*/
24879 switch ( wdiEncType )
24880 {
24881 case WDI_ENCR_NONE:
24882 return eSIR_ED_NONE;
24883
24884 case WDI_ENCR_WEP40:
24885 return eSIR_ED_WEP40;
24886
24887 case WDI_ENCR_WEP104:
24888 return eSIR_ED_WEP104;
24889
24890 case WDI_ENCR_TKIP:
24891 return eSIR_ED_TKIP;
24892
24893 case WDI_ENCR_CCMP:
24894 return eSIR_ED_CCMP;
24895
24896 case WDI_ENCR_AES_128_CMAC:
24897 return eSIR_ED_AES_128_CMAC;
24898#if defined(FEATURE_WLAN_WAPI)
24899 case WDI_ENCR_WPI:
24900 return eSIR_ED_WPI;
24901#endif
24902 default:
24903 return eSIR_ED_NOT_IMPLEMENTED;
24904 }
24905
24906}/*WDI_2_HAL_ENC_TYPE*/
24907
24908/*Convert WDI WEP type into HAL WEP type*/
24909WPT_STATIC WPT_INLINE tAniWepType
24910WDI_2_HAL_WEP_TYPE
24911(
24912 WDI_WepType wdiWEPType
24913)
24914{
Jeff Johnsone7245742012-09-05 17:12:55 -070024915 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024916 the chances of getting inlined*/
24917 switch ( wdiWEPType )
24918 {
24919 case WDI_WEP_STATIC:
24920 return eSIR_WEP_STATIC;
24921
24922 case WDI_WEP_DYNAMIC:
24923 return eSIR_WEP_DYNAMIC;
24924 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024925
Jeff Johnson295189b2012-06-20 16:38:30 -070024926 return eSIR_WEP_MAX;
24927}/*WDI_2_HAL_WEP_TYPE*/
24928
24929WPT_STATIC WPT_INLINE tSirLinkState
24930WDI_2_HAL_LINK_STATE
24931(
24932 WDI_LinkStateType wdiLinkState
24933)
24934{
Jeff Johnsone7245742012-09-05 17:12:55 -070024935 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024936 the chances of getting inlined*/
24937 switch ( wdiLinkState )
24938 {
24939 case WDI_LINK_IDLE_STATE:
24940 return eSIR_LINK_IDLE_STATE;
24941
24942 case WDI_LINK_PREASSOC_STATE:
24943 return eSIR_LINK_PREASSOC_STATE;
24944
24945 case WDI_LINK_POSTASSOC_STATE:
24946 return eSIR_LINK_POSTASSOC_STATE;
24947
24948 case WDI_LINK_AP_STATE:
24949 return eSIR_LINK_AP_STATE;
24950
24951 case WDI_LINK_IBSS_STATE:
24952 return eSIR_LINK_IBSS_STATE;
24953
24954 case WDI_LINK_BTAMP_PREASSOC_STATE:
24955 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24956
24957 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24958 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24959
24960 case WDI_LINK_BTAMP_AP_STATE:
24961 return eSIR_LINK_BTAMP_AP_STATE;
24962
24963 case WDI_LINK_BTAMP_STA_STATE:
24964 return eSIR_LINK_BTAMP_STA_STATE;
24965
24966 case WDI_LINK_LEARN_STATE:
24967 return eSIR_LINK_LEARN_STATE;
24968
24969 case WDI_LINK_SCAN_STATE:
24970 return eSIR_LINK_SCAN_STATE;
24971
24972 case WDI_LINK_FINISH_SCAN_STATE:
24973 return eSIR_LINK_FINISH_SCAN_STATE;
24974
24975 case WDI_LINK_INIT_CAL_STATE:
24976 return eSIR_LINK_INIT_CAL_STATE;
24977
24978 case WDI_LINK_FINISH_CAL_STATE:
24979 return eSIR_LINK_FINISH_CAL_STATE;
24980
Jeff Johnson295189b2012-06-20 16:38:30 -070024981 case WDI_LINK_LISTEN_STATE:
24982 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024983
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024984 case WDI_LINK_SEND_ACTION_STATE:
24985 return eSIR_LINK_SEND_ACTION_STATE;
24986
Jeff Johnson295189b2012-06-20 16:38:30 -070024987 default:
24988 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024989 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024990}
24991
Jeff Johnsone7245742012-09-05 17:12:55 -070024992/*Translate a STA Context from WDI into HAL*/
24993WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024994void
24995WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024996(
Jeff Johnson295189b2012-06-20 16:38:30 -070024997 tConfigStaParams* phalConfigSta,
24998 WDI_ConfigStaReqInfoType* pwdiConfigSta
24999)
25000{
25001 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025002#ifdef WLAN_FEATURE_11AC
25003 /* Get the Version 1 Handler */
25004 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25005 if (WDI_getFwWlanFeatCaps(DOT11AC))
25006 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025007 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025008 }
25009#endif
25010 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025011 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025012
Jeff Johnsone7245742012-09-05 17:12:55 -070025013 wpalMemoryCopy(phalConfigSta->bssId,
25014 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25015
25016 wpalMemoryCopy(phalConfigSta->staMac,
25017 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025018
25019 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25020 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25021 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25022 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25023 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25024 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25025 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25026 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25027 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25028 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25029 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25030 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25031 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25032 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25033 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25034 phalConfigSta->action = pwdiConfigSta->wdiAction;
25035 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25036 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25037 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25038 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25039 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25040 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25041 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025042
Jeff Johnson295189b2012-06-20 16:38:30 -070025043 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25044
Jeff Johnsone7245742012-09-05 17:12:55 -070025045 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025046 pwdiConfigSta->wdiSupportedRates.opRateMode;
25047 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25048 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025049 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025050 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25051 }
25052 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25053 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025054 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25056 }
25057 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25058 {
25059 phalConfigSta->supportedRates.aniLegacyRates[i] =
25060 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25061 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025062 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025063 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25064 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25065 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025066 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025067 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25068 }
25069 phalConfigSta->supportedRates.rxHighestDataRate =
25070 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25071
Jeff Johnsone7245742012-09-05 17:12:55 -070025072#ifdef WLAN_FEATURE_11AC
25073 if(phalConfigSta_V1 != NULL)
25074 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025075 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25076 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25077 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25078 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025079 }
25080#endif
25081
Jeff Johnson295189b2012-06-20 16:38:30 -070025082 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025083
Jeff Johnsone7245742012-09-05 17:12:55 -070025084#ifdef WLAN_FEATURE_11AC
25085 if(phalConfigSta_V1 != NULL)
25086 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025087 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25088 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025089 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025090 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025091 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25092 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25093
Jeff Johnsone7245742012-09-05 17:12:55 -070025094 }
25095#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025096}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025097
25098/*Translate a Rate set info from WDI into HAL*/
25099WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025100WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025101(
Jeff Johnson295189b2012-06-20 16:38:30 -070025102 tSirMacRateSet* pHalRateSet,
25103 WDI_RateSet* pwdiRateSet
25104)
25105{
Jeff Johnsone7245742012-09-05 17:12:55 -070025106 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25108
25109 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25110 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25111
25112 for ( i = 0; i < pHalRateSet->numRates; i++ )
25113 {
25114 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25115 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025116
Jeff Johnson295189b2012-06-20 16:38:30 -070025117}/*WDI_CopyWDIRateSetToHALRateSet*/
25118
25119
25120/*Translate an EDCA Parameter Record from WDI into HAL*/
25121WPT_STATIC WPT_INLINE void
25122WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025123(
Jeff Johnson295189b2012-06-20 16:38:30 -070025124 tSirMacEdcaParamRecord* phalEdcaParam,
25125 WDI_EdcaParamRecord* pWDIEdcaParam
25126)
25127{
Jeff Johnsone7245742012-09-05 17:12:55 -070025128 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025129 the chances of getting inlined*/
25130
25131 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25132 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25133 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25134 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25135
25136 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25137 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25138 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25139}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25140
25141
25142/*Copy a management frame header from WDI fmt into HAL fmt*/
25143WPT_STATIC WPT_INLINE void
25144WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25145(
25146 tSirMacMgmtHdr* pmacMgmtHdr,
25147 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25148)
25149{
25150 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25151 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25152 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25153 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25154 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25155 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25156 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25157 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25158 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25159 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25160 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25161
25162 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25163 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25164
Jeff Johnsone7245742012-09-05 17:12:55 -070025165 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025166 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025167 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025168 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025169 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025170 pwdiMacMgmtHdr->bssId, 6);
25171
25172 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25173 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25174 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25175
25176}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25177
25178
25179/*Copy config bss parameters from WDI fmt into HAL fmt*/
25180WPT_STATIC WPT_INLINE void
25181WDI_CopyWDIConfigBSSToHALConfigBSS
25182(
25183 tConfigBssParams* phalConfigBSS,
25184 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25185)
25186{
25187
25188 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025189#ifdef WLAN_FEATURE_11AC
25190 /* Get the Version 1 Handler */
25191 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25192 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025193 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025194#endif
25195
Jeff Johnson295189b2012-06-20 16:38:30 -070025196 wpalMemoryCopy( phalConfigBSS->bssId,
25197 pwdiConfigBSS->macBSSID,
25198 WDI_MAC_ADDR_LEN);
25199
25200#ifdef HAL_SELF_STA_PER_BSS
25201 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25202 pwdiConfigBSS->macSelfAddr,
25203 WDI_MAC_ADDR_LEN);
25204#endif
25205
25206 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25207
25208 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25209 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25210
Jeff Johnsone7245742012-09-05 17:12:55 -070025211 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025212 pwdiConfigBSS->ucShortSlotTimeSupported;
25213 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25214 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25215 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25216 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25217 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025218 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025219 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25220 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25221 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25222 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25223 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25224 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25225 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25226 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25227 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25228 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25229 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25230
Jeff Johnsone7245742012-09-05 17:12:55 -070025231 phalConfigBSS->htOperMode =
25232 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025233
25234 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25235 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25236 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25237 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25238
25239#ifdef WLAN_FEATURE_VOWIFI
25240 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25241#endif
25242
25243 /*! Used 32 as magic number because that is how the ssid is declared inside the
25244 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025245 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025246 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25247 pwdiConfigBSS->wdiSSID.ucLength : 32;
25248 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025249 pwdiConfigBSS->wdiSSID.sSSID,
25250 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025251
25252 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25253 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025254
Jeff Johnson295189b2012-06-20 16:38:30 -070025255 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25256 &pwdiConfigBSS->wdiRateSet);
25257
25258 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25259
25260 if(phalConfigBSS->edcaParamsValid)
25261 {
25262 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25263 &pwdiConfigBSS->wdiBEEDCAParams);
25264 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25265 &pwdiConfigBSS->wdiBKEDCAParams);
25266 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25267 &pwdiConfigBSS->wdiVIEDCAParams);
25268 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25269 &pwdiConfigBSS->wdiVOEDCAParams);
25270 }
25271
Jeff Johnsone7245742012-09-05 17:12:55 -070025272 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025273
25274 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25275
25276#ifdef WLAN_FEATURE_VOWIFI_11R
25277
Jeff Johnsone7245742012-09-05 17:12:55 -070025278 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025279 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025280
Jeff Johnson295189b2012-06-20 16:38:30 -070025281 if( phalConfigBSS->extSetStaKeyParamValid )
25282 {
25283 /*-----------------------------------------------------------------------
25284 Copy the STA Key parameters into the HAL message
25285 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025286 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025287 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25288
Jeff Johnsone7245742012-09-05 17:12:55 -070025289 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025290 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25291
25292 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25293
25294 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25295
25296 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25297
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25299 keyIndex++)
25300 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025301 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025302 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25303 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25304 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25305 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25306 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25307 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025308 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025309 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025310 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025311 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025312 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025313 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25314 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025315 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025316 WDI_MAX_KEY_LENGTH);
25317 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 }
25319 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25320 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025321 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025322 sizeof(phalConfigBSS->extSetStaKeyParam) );
25323 }
25324
25325#endif /*WLAN_FEATURE_VOWIFI_11R*/
25326
Jeff Johnsone7245742012-09-05 17:12:55 -070025327#ifdef WLAN_FEATURE_11AC
25328 if(phalConfigBSS_V1 != NULL)
25329 {
25330 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25331 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25332 }
25333#endif
25334
Jeff Johnson295189b2012-06-20 16:38:30 -070025335}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25336
25337
Jeff Johnsone7245742012-09-05 17:12:55 -070025338/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025339 pointed to by user data */
25340WPT_STATIC WPT_INLINE void
25341WDI_ExtractRequestCBFromEvent
25342(
25343 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025344 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025345 void** ppUserData
25346)
25347{
25348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25349 switch ( pEvent->wdiRequest )
25350 {
25351 case WDI_START_REQ:
25352 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25353 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25354 break;
25355 case WDI_STOP_REQ:
25356 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25357 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25358 break;
25359 case WDI_INIT_SCAN_REQ:
25360 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25361 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25362 break;
25363 case WDI_START_SCAN_REQ:
25364 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25365 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25366 break;
25367 case WDI_END_SCAN_REQ:
25368 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25369 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25370 break;
25371 case WDI_FINISH_SCAN_REQ:
25372 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25373 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25374 break;
25375 case WDI_JOIN_REQ:
25376 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25377 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25378 break;
25379 case WDI_CONFIG_BSS_REQ:
25380 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25381 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25382 break;
25383 case WDI_DEL_BSS_REQ:
25384 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25385 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25386 break;
25387 case WDI_POST_ASSOC_REQ:
25388 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25389 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25390 break;
25391 case WDI_DEL_STA_REQ:
25392 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25393 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25394 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025395
25396 case WDI_ADD_STA_SELF_REQ:
25397 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25398 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25399 break;
25400
Jeff Johnson295189b2012-06-20 16:38:30 -070025401 case WDI_DEL_STA_SELF_REQ:
25402 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25403 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25404 break;
25405
25406 case WDI_SET_BSS_KEY_REQ:
25407 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25408 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25409 break;
25410 case WDI_RMV_BSS_KEY_REQ:
25411 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25412 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25413 break;
25414 case WDI_SET_STA_KEY_REQ:
25415 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25416 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25417 break;
25418 case WDI_RMV_STA_KEY_REQ:
25419 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25420 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25421 break;
25422 case WDI_ADD_TS_REQ:
25423 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25424 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25425 break;
25426 case WDI_DEL_TS_REQ:
25427 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25428 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25429 break;
25430 case WDI_UPD_EDCA_PRMS_REQ:
25431 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25432 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25433 break;
25434 case WDI_ADD_BA_SESSION_REQ:
25435 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25436 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25437 break;
25438 case WDI_DEL_BA_REQ:
25439 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25440 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25441 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025442#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025443 case WDI_TSM_STATS_REQ:
25444 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25445 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25446 break;
25447#endif
25448 case WDI_CH_SWITCH_REQ:
25449 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25450 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25451 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025452 case WDI_CH_SWITCH_REQ_V1:
25453 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25454 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25455 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 case WDI_CONFIG_STA_REQ:
25457 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25458 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25459 break;
25460 case WDI_SET_LINK_ST_REQ:
25461 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25462 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25463 break;
25464 case WDI_GET_STATS_REQ:
25465 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25466 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25467 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025468#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025469 case WDI_GET_ROAM_RSSI_REQ:
25470 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25471 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25472 break;
25473#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025474 case WDI_UPDATE_CFG_REQ:
25475 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25476 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25477 break;
25478 case WDI_ADD_BA_REQ:
25479 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25480 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25481 break;
25482 case WDI_TRIGGER_BA_REQ:
25483 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25484 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25485 break;
25486 case WDI_UPD_BCON_PRMS_REQ:
25487 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25488 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25489 break;
25490 case WDI_SND_BCON_REQ:
25491 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25492 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25493 break;
25494 case WDI_ENTER_BMPS_REQ:
25495 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25496 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25497 break;
25498 case WDI_EXIT_BMPS_REQ:
25499 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25500 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25501 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025502 case WDI_ENTER_IMPS_REQ:
25503 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25504 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25505 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025506 case WDI_ENTER_UAPSD_REQ:
25507 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25508 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25509 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025510 case WDI_EXIT_UAPSD_REQ:
25511 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25512 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25513 break;
25514 case WDI_SET_UAPSD_PARAM_REQ:
25515 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25516 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25517 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025518 case WDI_UPDATE_UAPSD_PARAM_REQ:
25519 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25520 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25521 break;
25522 case WDI_CONFIGURE_RXP_FILTER_REQ:
25523 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25524 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25525 break;
25526 case WDI_SET_BEACON_FILTER_REQ:
25527 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25528 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25529 break;
25530 case WDI_REM_BEACON_FILTER_REQ:
25531 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25532 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025533 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025534 case WDI_SET_RSSI_THRESHOLDS_REQ:
25535 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25536 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25537 break;
25538 case WDI_HOST_OFFLOAD_REQ:
25539 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25540 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25541 break;
25542 case WDI_WOWL_ADD_BC_PTRN_REQ:
25543 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25544 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25545 break;
25546 case WDI_WOWL_DEL_BC_PTRN_REQ:
25547 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25548 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25549 break;
25550 case WDI_WOWL_ENTER_REQ:
25551 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25552 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25553 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025554 case WDI_WOWL_EXIT_REQ:
25555 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25556 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25557 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25559 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25560 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25561 break;
25562 case WDI_FLUSH_AC_REQ:
25563 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25564 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25565 break;
25566 case WDI_BTAMP_EVENT_REQ:
25567 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25568 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25569 break;
25570 case WDI_KEEP_ALIVE_REQ:
25571 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25572 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25573 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025574#if defined FEATURE_WLAN_SCAN_PNO
25575 case WDI_SET_PREF_NETWORK_REQ:
25576 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25577 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25578 break;
25579 case WDI_SET_RSSI_FILTER_REQ:
25580 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25581 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25582 break;
25583 case WDI_UPDATE_SCAN_PARAMS_REQ:
25584 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25585 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25586 break;
25587#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025588 case WDI_SET_TX_PER_TRACKING_REQ:
25589 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25590 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025591 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025592#if defined WLAN_FEATURE_PACKET_FILTERING
25593 case WDI_8023_MULTICAST_LIST_REQ:
25594 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25595 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25596 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025597 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25598 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25599 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25600 break;
25601 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25602 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25603 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25604 break;
25605 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25606 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25607 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25608 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025609#endif
25610 case WDI_SET_POWER_PARAMS_REQ:
25611 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25612 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25613 break;
25614#if defined WLAN_FEATURE_GTK_OFFLOAD
25615 case WDI_GTK_OFFLOAD_REQ:
25616 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25617 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25618 break;
25619 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25620 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25621 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25622 break;
25623#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025624
Jeff Johnson295189b2012-06-20 16:38:30 -070025625 default:
25626 *ppfnReqCB = NULL;
25627 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025628 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025629 }
25630}/*WDI_ExtractRequestCBFromEvent*/
25631
25632
25633/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025634 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 frame xtl is enabled for a particular STA.
25636
25637 WDI_PostAssocReq must have been called.
25638
Jeff Johnsone7245742012-09-05 17:12:55 -070025639 @param uSTAIdx: STA index
25640
Jeff Johnson295189b2012-06-20 16:38:30 -070025641 @see WDI_PostAssocReq
25642 @return Result of the function call
25643*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025644wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025645WDI_IsHwFrameTxTranslationCapable
25646(
25647 wpt_uint8 uSTAIdx
25648)
25649{
Jeff Johnsone7245742012-09-05 17:12:55 -070025650 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 uma value*/
25652 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025653 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025654 ------------------------------------------------------------------------*/
25655 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25656 {
25657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25658 "WDI API call before module is initialized - Fail request");
25659
Jeff Johnsone7245742012-09-05 17:12:55 -070025660 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025661 }
25662
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025663#ifdef WLAN_SOFTAP_VSTA_FEATURE
25664 if (IS_VSTA_IDX(uSTAIdx))
25665 {
25666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25667 "STA %d is a Virtual STA, "
25668 "HW frame translation disabled", uSTAIdx);
25669 return eWLAN_PAL_FALSE;
25670 }
25671#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025672
Jeff Johnson295189b2012-06-20 16:38:30 -070025673 return gWDICb.bFrameTransEnabled;
25674}/*WDI_IsHwFrameTxTranslationCapable*/
25675
Katya Nigam6201c3e2014-05-27 17:51:42 +053025676
25677/**
25678 @brief WDI_IsSelfSTA - check if staid is self sta index
25679
25680
25681 @param pWDICtx: pointer to the WLAN DAL context
25682 ucSTAIdx: station index
25683
25684 @return Result of the function call
25685*/
25686wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25687{
25688 wpt_uint8 ucSTAType;
25689
25690 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25691 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25692 {
25693 if( ucSTAType == WDI_STA_ENTRY_SELF )
25694 return eWLAN_PAL_TRUE;
25695 }
25696
25697 return eWLAN_PAL_FALSE;
25698}
25699
25700
25701
Jeff Johnson295189b2012-06-20 16:38:30 -070025702#ifdef FEATURE_WLAN_SCAN_PNO
25703/**
25704 @brief WDI_SetPreferredNetworkList
25705
Jeff Johnsone7245742012-09-05 17:12:55 -070025706 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025707 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025708
Jeff Johnson295189b2012-06-20 16:38:30 -070025709 wdiPNOScanCb: callback for passing back the response
25710 of the Set PNO operation received from the
25711 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025712
Jeff Johnson295189b2012-06-20 16:38:30 -070025713 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025714 callback
25715
Jeff Johnson295189b2012-06-20 16:38:30 -070025716 @return Result of the function call
25717*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025718WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025719WDI_SetPreferredNetworkReq
25720(
25721 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25722 WDI_PNOScanCb wdiPNOScanCb,
25723 void* pUserData
25724)
25725{
25726 WDI_EventInfoType wdiEventData = {{0}};
25727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25728
25729 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025730 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025731 ------------------------------------------------------------------------*/
25732 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25733 {
25734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25735 "WDI API call before module is initialized - Fail request");
25736
Jeff Johnsone7245742012-09-05 17:12:55 -070025737 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025738 }
25739
25740 /*------------------------------------------------------------------------
25741 Fill in Event data and post to the Main FSM
25742 ------------------------------------------------------------------------*/
25743 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025744 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025745 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025746 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025747 wdiEventData.pUserData = pUserData;
25748
25749 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25750}
25751
25752
25753/**
25754 @brief WDI_SetRssiFilterReq
25755
Jeff Johnsone7245742012-09-05 17:12:55 -070025756 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025757 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025758
Jeff Johnson295189b2012-06-20 16:38:30 -070025759 wdiRssiFilterCb: callback for passing back the response
25760 of the Set RSSI Filter operation received from the
25761 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025762
Jeff Johnson295189b2012-06-20 16:38:30 -070025763 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025764 callback
25765
Jeff Johnson295189b2012-06-20 16:38:30 -070025766 @return Result of the function call
25767*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025768WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025769WDI_SetRssiFilterReq
25770(
25771 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25772 WDI_RssiFilterCb wdiRssiFilterCb,
25773 void* pUserData
25774)
25775{
25776 WDI_EventInfoType wdiEventData = {{0}};
25777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25778
25779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025781 ------------------------------------------------------------------------*/
25782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25783 {
25784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25785 "WDI API call before module is initialized - Fail request");
25786
Jeff Johnsone7245742012-09-05 17:12:55 -070025787 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025788 }
25789
25790 /*------------------------------------------------------------------------
25791 Fill in Event data and post to the Main FSM
25792 ------------------------------------------------------------------------*/
25793 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025794 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025795 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025796 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025797 wdiEventData.pUserData = pUserData;
25798
25799 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25800}/*WDI_SetRssiFilterReq*/
25801
25802/**
25803 @brief WDI_UpdateScanParamsReq
25804
Jeff Johnsone7245742012-09-05 17:12:55 -070025805 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025806 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025807
Jeff Johnson295189b2012-06-20 16:38:30 -070025808 wdiUpdateScanParamsCb: callback for passing back the response
25809 of the Set PNO operation received from the
25810 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025811
Jeff Johnson295189b2012-06-20 16:38:30 -070025812 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025813 callback
25814
Jeff Johnson295189b2012-06-20 16:38:30 -070025815 @return Result of the function call
25816*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025817WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025818WDI_UpdateScanParamsReq
25819(
25820 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25821 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25822 void* pUserData
25823)
25824{
25825 WDI_EventInfoType wdiEventData = {{0}};
25826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25827
25828 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025829 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025830 ------------------------------------------------------------------------*/
25831 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25832 {
25833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25834 "WDI API call before module is initialized - Fail request");
25835
Jeff Johnsone7245742012-09-05 17:12:55 -070025836 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025837 }
25838
25839 /*------------------------------------------------------------------------
25840 Fill in Event data and post to the Main FSM
25841 ------------------------------------------------------------------------*/
25842 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025843 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025844 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025845 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025846 wdiEventData.pUserData = pUserData;
25847
25848 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25849}
25850
25851/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025852 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025853 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025854
25855 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025856 pwdiPNOScanReqParams: pointer to the info received
25857 from upper layers
25858 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025859 and its size
25860
Jeff Johnson295189b2012-06-20 16:38:30 -070025861 @return Result of the function call
25862*/
25863
25864WDI_Status
25865WDI_PackPreferredNetworkList
25866(
25867 WDI_ControlBlockType* pWDICtx,
25868 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25869 wpt_uint8** ppSendBuffer,
25870 wpt_uint16* pSize
25871)
25872{
Jeff Johnsone7245742012-09-05 17:12:55 -070025873 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025874 wpt_uint16 usDataOffset = 0;
25875 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025876 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025877 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025878 /*-----------------------------------------------------------------------
25879 Get message buffer
25880 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025881 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025882 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025883 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025884 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 {
25886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025887 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 pwdiPNOScanReqParams);
25889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 }
25892
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025893 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25894
Jeff Johnson295189b2012-06-20 16:38:30 -070025895 /*-------------------------------------------------------------------------
25896 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25897 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025898 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025900 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025901 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25902
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025903 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025904 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025905 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025906 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025907 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25908
25909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025910 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025911 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25912 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25913 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25914
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025915 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025916 {
25917 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025918 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025919 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25920
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025921 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025922 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025923 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025924
25925 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025926 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025927 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025928
25929 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025930 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025931 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025932
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025935 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025936 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25937 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25938 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25939 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025940
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025941 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025942 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025943 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025944
25945 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025946 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025947 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25948
25949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025950 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025951 pPrefNetwListParams->aNetworks[i].ssId.length,
25952 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025953 }
25954
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025955 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025956 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025957 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25958 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25959 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25960
25961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025962 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025963 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025964 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25965 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25966
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025967 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025968 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025969 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025970 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025971 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025972 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25973 }
25974
25975 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025976 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25978 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25979 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025980 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025981
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025982 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025983 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025984 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025985
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025986 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025987 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25988 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25989 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025990 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025991
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025992 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025993 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025994 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025995
25996 /*Set the output values*/
25997 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025998 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025999
26000 return WDI_STATUS_SUCCESS;
26001}/*WDI_PackPreferredNetworkList*/
26002
26003/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026004 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026005 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026006
26007 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026008 pwdiPNOScanReqParams: pointer to the info received
26009 from upper layers
26010 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026011 and its size
26012
Jeff Johnson295189b2012-06-20 16:38:30 -070026013 @return Result of the function call
26014*/
26015
26016WDI_Status
26017WDI_PackPreferredNetworkListNew
26018(
26019 WDI_ControlBlockType* pWDICtx,
26020 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26021 wpt_uint8** ppSendBuffer,
26022 wpt_uint16* pSize
26023)
26024{
Jeff Johnsone7245742012-09-05 17:12:55 -070026025 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026026 wpt_uint16 usDataOffset = 0;
26027 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026028 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026029 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026030
26031 /*-----------------------------------------------------------------------
26032 Get message buffer
26033 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026035 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026036 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026037 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026038 {
26039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026040 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026041 pwdiPNOScanReqParams);
26042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026044 }
26045
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026046 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26047
Jeff Johnson295189b2012-06-20 16:38:30 -070026048 /*-------------------------------------------------------------------------
26049 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26050 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026051 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026052 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026053 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026054 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26055
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026056 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026057 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026058 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026059 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26061
26062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026063 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026064 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26065 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26066 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26067
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026068 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026069 {
26070 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026071 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026072 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26073
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026074 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026075 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026076 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026077
26078 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026079 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026080 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026081
26082 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026083 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026084 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026085
26086 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026087 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026088 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026089
Jeff Johnsone7245742012-09-05 17:12:55 -070026090 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026091 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026092 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026093 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26094
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026095 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026096 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026097 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026098
26099 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026100 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026101 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26102
26103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026104 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026105 pPrefNetwListParams->aNetworks[i].ssId.length,
26106 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026107 }
26108
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026109 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026110 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026111 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26112 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26113 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26114
26115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026116 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026117 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026118 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26119 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26120
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026121 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026122 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026123 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026124 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026125 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026126 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26127 }
26128
26129 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026130 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026131 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26132 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26133 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026134 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026135
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026136 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026137 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026138 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026139
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026140 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026141 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26142 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26143 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026144 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026145
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026146 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026147 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026148 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026149
Jeff Johnson295189b2012-06-20 16:38:30 -070026150
26151 /*Set the output values*/
26152 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026153 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026154
26155 return WDI_STATUS_SUCCESS;
26156}/*WDI_PackPreferredNetworkListNew*/
26157
26158/**
26159 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026160
26161 @param pWDICtx: pointer to the WLAN DAL context
26162 pEventData: pointer to the event information structure
26163
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 @return Result of the function call
26165*/
26166WDI_Status
26167WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026168(
Jeff Johnson295189b2012-06-20 16:38:30 -070026169 WDI_ControlBlockType* pWDICtx,
26170 WDI_EventInfoType* pEventData
26171)
26172{
26173 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26174 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026175 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026176 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026177 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026178
26179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026181 -------------------------------------------------------------------------*/
26182 if (( NULL == pEventData ) ||
26183 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26184 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26185 {
26186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026190 }
26191
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026192 /*----------------------------------------------------------------------
26193 Avoid Enable PNO during any active session or an ongoing session
26194 ----------------------------------------------------------------------*/
26195 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26196 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26197 {
26198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26199 "%s:(Active/Ongoing Session) - Fail request", __func__);
26200
26201 return WDI_STATUS_E_FAILURE;
26202 }
26203
Jeff Johnson295189b2012-06-20 16:38:30 -070026204 /*-------------------------------------------------------------------------
26205 Pack the PNO request structure based on version
26206 -------------------------------------------------------------------------*/
26207 if ( pWDICtx->wdiPNOVersion > 0 )
26208 {
26209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026210 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026211 pWDICtx->wdiPNOVersion);
26212
26213 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26214 &pSendBuffer, &usSendSize);
26215 }
26216 else
26217 {
26218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026219 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026220 pWDICtx->wdiPNOVersion);
26221
26222 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26223 &pSendBuffer, &usSendSize);
26224 }
26225
26226 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26227 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26228 {
26229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026230 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026232 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026233 }
26234
26235 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026236 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026237
26238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026239 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026240 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026241 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26242 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026243}
26244
26245/**
26246 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026247
26248 @param pWDICtx: pointer to the WLAN DAL context
26249 pEventData: pointer to the event information structure
26250
Jeff Johnson295189b2012-06-20 16:38:30 -070026251 @see
26252 @return Result of the function call
26253*/
26254WDI_Status
26255WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026256(
Jeff Johnson295189b2012-06-20 16:38:30 -070026257 WDI_ControlBlockType* pWDICtx,
26258 WDI_EventInfoType* pEventData
26259)
26260{
26261 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26262 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026263 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026264 wpt_uint16 usDataOffset = 0;
26265 wpt_uint16 usSendSize = 0;
26266 wpt_uint8 ucRssiThreshold;
26267
26268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026270 -------------------------------------------------------------------------*/
26271 if (( NULL == pEventData ) ||
26272 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26273 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26274 {
26275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026279 }
26280
26281 /*-----------------------------------------------------------------------
26282 Get message buffer
26283 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026285 sizeof(ucRssiThreshold),
26286 &pSendBuffer, &usDataOffset, &usSendSize))||
26287 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26288 {
26289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026290 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026291 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026294 }
26295
26296 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26297
Jeff Johnsone7245742012-09-05 17:12:55 -070026298 wpalMemoryCopy( pSendBuffer+usDataOffset,
26299 &ucRssiThreshold,
26300 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026301
26302 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026303 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026304
26305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026306 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026307 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026308 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26309 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026310}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026311#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26312/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026313 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026314
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026315 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026316 by the Device Interface
26317
26318 wdiRoamOffloadScancb: callback for passing back the response
26319 of the Roam Candidate Lookup Req operation received from the
26320 device
26321
26322 pUserData: user data will be passed back with the
26323 callback
26324 @return Result of the function call
26325*/
26326WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026327WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026328(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026329 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026330 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26331 void* pUserData
26332)
26333{
26334 WDI_EventInfoType wdiEventData = {{0}};
26335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26336
26337 /*------------------------------------------------------------------------
26338 Sanity Check
26339 ------------------------------------------------------------------------*/
26340 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26341 {
26342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26343 "WDI API call before module is initialized - Fail request");
26344
26345 return WDI_STATUS_E_NOT_ALLOWED;
26346 }
26347
26348 /*------------------------------------------------------------------------
26349 Fill in Event data and post to the Main FSM
26350 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026351 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26352 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26353 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026354 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26355 wdiEventData.pUserData = pUserData;
26356
26357 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26358}
26359
26360void
26361WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26362{
26363 switch (wdiEdType)
26364 {
26365 case WDI_ED_NONE:
26366 *EdType = eED_NONE;
26367 break;
26368 case WDI_ED_WEP40:
26369 case WDI_ED_WEP104:
26370 *EdType = eED_WEP;
26371 break;
26372 case WDI_ED_TKIP:
26373 *EdType = eED_TKIP;
26374 break;
26375 case WDI_ED_CCMP:
26376#ifdef WLAN_FEATURE_11W
26377 case WDI_ED_AES_128_CMAC:
26378#endif
26379 *EdType = eED_CCMP;
26380 break;
26381#ifdef FEATURE_WLAN_WAPI
26382 case WDI_ED_WPI:
26383 *EdType = eED_WPI;
26384 break;
26385#endif
26386 case WDI_ED_ANY:
26387 *EdType = eED_ANY;
26388 break;
26389
26390 default:
26391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26392 "%s: Unknown Encryption Type", __func__);
26393 break;
26394 }
26395}
26396
26397/**
26398 @brief Helper function to pack Start Roam Candidate Lookup
26399 Request parameters
26400
26401 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026402 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026403 from upper layers
26404 ppSendBuffer, pSize - out pointers of the packed buffer
26405 and its size
26406
26407 @return Result of the function call
26408*/
26409
26410WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026411WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026412(
26413 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026414 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026415 wpt_uint8** ppSendBuffer,
26416 wpt_uint16* pSize
26417)
26418{
26419 wpt_uint8* pSendBuffer = NULL;
26420 wpt_uint16 usDataOffset = 0;
26421 wpt_uint16 usSendSize = 0;
26422 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26423 wpt_uint8 i;
26424 /*-----------------------------------------------------------------------
26425 Get message buffer
26426 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026427 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026428 sizeof(tRoamCandidateListParams),
26429 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026430 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026431 {
26432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026433 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026434 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026435 WDI_ASSERT(0);
26436 return WDI_STATUS_E_FAILURE;
26437 }
26438 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026439 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026440 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026441 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026442 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026443 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026444 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026445 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026446 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026447 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026448 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026449
26450 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026451 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026452 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026453 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026454 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26455 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026456 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26457 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26458 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26459 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26460 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026461 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026462 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026463 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026464 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26465 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26466 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26467 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26468 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26469 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26470 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026471 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026472 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026473 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26474 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26475 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026476
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26478 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26479 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26480 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26481 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26482 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026483 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026484 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26485 pRoamCandidateListParams->RoamScanOffloadEnabled,
26486 pRoamCandidateListParams->Command,
26487 pRoamCandidateListParams->StartScanReason,
26488 pRoamCandidateListParams->NeighborScanTimerPeriod,
26489 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26490 pRoamCandidateListParams->NeighborScanChannelMinTime,
26491 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26492 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26493 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26494 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26495 pRoamCandidateListParams->ConnectedNetwork.authentication,
26496 pRoamCandidateListParams->ConnectedNetwork.encryption,
26497 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26498 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26499 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026500 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026501 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026502 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026503 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026504 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26505 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026506 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026507 pRoamCandidateListParams->us24GProbeSize);
26508 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026509 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
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.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026512 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26513 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026514 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026515 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026516 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26517 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26518 pRoamCandidateListParams->nProbes =
26519 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26520 pRoamCandidateListParams->HomeAwayTime =
26521 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026523 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26524 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026526 }
26527
26528
26529 /*Set the output values*/
26530 *ppSendBuffer = pSendBuffer;
26531 *pSize = usSendSize;
26532 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026533}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026534
26535/**
26536 @brief Process Start Roam Candidate Lookup Request function
26537
26538 @param pWDICtx: pointer to the WLAN DAL context
26539 pEventData: pointer to the event information structure
26540
26541 @return Result of the function call
26542*/
26543WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026544WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026545(
26546 WDI_ControlBlockType* pWDICtx,
26547 WDI_EventInfoType* pEventData
26548)
26549{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026550 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026551 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26552 wpt_uint8* pSendBuffer = NULL;
26553 wpt_uint16 usSendSize = 0;
26554 WDI_Status wdiStatus;
26555 /*-------------------------------------------------------------------------
26556 Sanity check
26557 -------------------------------------------------------------------------*/
26558 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026559 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026560 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26561 {
26562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26563 "%s: Invalid parameters", __func__);
26564 WDI_ASSERT(0);
26565 return WDI_STATUS_E_FAILURE;
26566 }
26567
26568 /*-------------------------------------------------------------------------
26569 Pack the Start Roam Candidate Lookup request structure based on version
26570 -------------------------------------------------------------------------*/
26571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26572 "%s: Packing Roam Candidate Lookup request ", __func__);
26573
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026574 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026575 &pSendBuffer, &usSendSize);
26576
26577 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26578 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26579 {
26580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26581 "%s: failed to pack request parameters", __func__);
26582 WDI_ASSERT(0);
26583 return wdiStatus;
26584 }
26585
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026586 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26587 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026588
26589 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026590 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026591 -------------------------------------------------------------------------*/
26592 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026593 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026594}
26595
26596/**
26597 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26598 response is being received over the bus from HAL)
26599
26600 @param pWDICtx: pointer to the WLAN DAL context
26601 pEventData: pointer to the event information structure
26602
26603 @see
26604 @return Result of the function call
26605*/
26606WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026607WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026608(
26609 WDI_ControlBlockType* pWDICtx,
26610 WDI_EventInfoType* pEventData
26611)
26612{
26613 WDI_Status wdiStatus;
26614 eHalStatus halStatus;
26615 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26616
26617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26618
26619 /*-------------------------------------------------------------------------
26620 Sanity check
26621 -------------------------------------------------------------------------*/
26622 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26623 ( NULL == pEventData->pEventData ))
26624 {
26625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26626 "%s: Invalid parameters", __func__);
26627 WDI_ASSERT(0);
26628 return WDI_STATUS_E_FAILURE;
26629 }
26630
26631 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26632
26633 /*-------------------------------------------------------------------------
26634 Extract response and send it to UMAC
26635 -------------------------------------------------------------------------*/
26636 halStatus = *((eHalStatus*)pEventData->pEventData);
26637 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26638
26639 /*Notify UMAC*/
26640 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26641
26642 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026643}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026644#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026645
26646/**
26647 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026648
26649 @param pWDICtx: pointer to the WLAN DAL context
26650 pEventData: pointer to the event information structure
26651
Jeff Johnson295189b2012-06-20 16:38:30 -070026652 @see
26653 @return Result of the function call
26654*/
26655WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026656WDI_PackUpdateScanParamsReq
26657(
26658 WDI_ControlBlockType* pWDICtx,
26659 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26660 wpt_uint8** ppSendBuffer,
26661 wpt_uint16* pSize
26662)
26663{
26664 wpt_uint8* pSendBuffer = NULL;
26665 wpt_uint16 usDataOffset = 0;
26666 wpt_uint16 usSendSize = 0;
26667 tUpdateScanParams updateScanParams = {0};
26668
26669
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026671 "Begin WDI Update Scan Parameters Old Style Params");
26672 /*-----------------------------------------------------------------------
26673 Get message buffer
26674 -----------------------------------------------------------------------*/
26675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26676 sizeof(updateScanParams),
26677 &pSendBuffer, &usDataOffset, &usSendSize))||
26678 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26679 {
26680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026681 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026682 pwdiUpdateScanParams);
26683 WDI_ASSERT(0);
26684 return WDI_STATUS_E_FAILURE;
26685 }
26686
26687 //
26688 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26689 //
26690
26691 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26692 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26693
26694 updateScanParams.ucChannelCount =
26695 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26696 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26697 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26698 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26699
26700 wpalMemoryCopy( updateScanParams.aChannels,
26701 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26702 updateScanParams.ucChannelCount);
26703
26704
26705 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26706 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26707 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26708 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26709 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26710
26711 wpalMemoryCopy( pSendBuffer+usDataOffset,
26712 &updateScanParams,
26713 sizeof(updateScanParams));
26714
26715 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26716 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26717
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026719 "End Update Scan Parameters Old Style");
26720
26721 /*Set the output values*/
26722 *ppSendBuffer = pSendBuffer;
26723 *pSize = usSendSize;
26724
26725 return WDI_STATUS_SUCCESS;
26726}
26727
26728/**
26729 @brief Process Update Scan Params function
26730
26731 @param pWDICtx: pointer to the WLAN DAL context
26732 pEventData: pointer to the event information structure
26733
26734 @see
26735 @return Result of the function call
26736*/
26737WDI_Status
26738WDI_PackUpdateScanParamsReqEx
26739(
26740 WDI_ControlBlockType* pWDICtx,
26741 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26742 wpt_uint8** ppSendBuffer,
26743 wpt_uint16* pSize
26744)
26745{
26746 wpt_uint8* pSendBuffer = NULL;
26747 wpt_uint16 usDataOffset = 0;
26748 wpt_uint16 usSendSize = 0;
26749 tUpdateScanParamsEx updateScanParams = {0};
26750
26751
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026752 /*-----------------------------------------------------------------------
26753 Get message buffer
26754 -----------------------------------------------------------------------*/
26755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26756 sizeof(updateScanParams),
26757 &pSendBuffer, &usDataOffset, &usSendSize))||
26758 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26759 {
26760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026761 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026762 pwdiUpdateScanParams);
26763 WDI_ASSERT(0);
26764 return WDI_STATUS_E_FAILURE;
26765 }
26766
26767 //
26768 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26769 //
26770
26771 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26772 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26773
26774 updateScanParams.ucChannelCount =
26775 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26776 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26777 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26778 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26779
26780 wpalMemoryCopy( updateScanParams.aChannels,
26781 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26782 updateScanParams.ucChannelCount);
26783
26784
26785 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26786 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26787 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26788 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26789 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26790
26791 wpalMemoryCopy( pSendBuffer+usDataOffset,
26792 &updateScanParams,
26793 sizeof(updateScanParams));
26794
26795 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26796 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26797
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026798 /*Set the output values*/
26799 *ppSendBuffer = pSendBuffer;
26800 *pSize = usSendSize;
26801
26802 return WDI_STATUS_SUCCESS;
26803}
26804
26805/**
26806 @brief Process Update Scan Params function
26807
26808 @param pWDICtx: pointer to the WLAN DAL context
26809 pEventData: pointer to the event information structure
26810
26811 @see
26812 @return Result of the function call
26813*/
26814WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026815WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026816(
Jeff Johnson295189b2012-06-20 16:38:30 -070026817 WDI_ControlBlockType* pWDICtx,
26818 WDI_EventInfoType* pEventData
26819)
26820{
26821 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26822 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026823 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026824 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026825 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026826
26827 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026828 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026829 -------------------------------------------------------------------------*/
26830 if (( NULL == pEventData ) ||
26831 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26832 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26833 {
26834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026835 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026838 }
26839
26840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26841 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026842
26843 //
26844 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26845 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026846 if ( pWDICtx->wlanVersion.revision < 1 )
26847 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026848 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026849 &pSendBuffer, &usSendSize);
26850 }
26851 else
26852 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026853 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26854 &pSendBuffer, &usSendSize);
26855 }
26856
26857 if(WDI_STATUS_SUCCESS != wdiStatus)
26858 {
26859 //memory allocation failed
26860 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026861 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026862
Jeff Johnson295189b2012-06-20 16:38:30 -070026863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026864 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026865 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026866 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026867 wdiUpdateScanParamsCb, pEventData->pUserData,
26868 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026869}
26870
26871/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026872 @brief Process Update Channel Params function
26873
26874 @param pWDICtx: pointer to the WLAN DAL context
26875 pEventData: pointer to the event information structure
26876
26877 @see
26878 @return Result of the function call
26879*/
26880WDI_Status
26881WDI_ProcessUpdateChannelParamsReq
26882(
26883 WDI_ControlBlockType* pWDICtx,
26884 WDI_EventInfoType* pEventData
26885)
26886{
26887 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26888 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26889 wpt_uint8* pSendBuffer = NULL;
26890 wpt_uint16 usDataOffset = 0;
26891 wpt_uint16 usSendSize = 0;
26892 tUpdateChannelReqType *updateChannelParams;
26893 wpt_uint32 usUpdateChanParamSize;
26894 wpt_uint8 num_channels = 0;
26895
26896 /*-------------------------------------------------------------------------
26897 Sanity check
26898 -------------------------------------------------------------------------*/
26899 if (( NULL == pEventData ) ||
26900 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26901 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26902 {
26903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26904 "%s: Invalid parameters", __func__);
26905 WDI_ASSERT(0);
26906 return WDI_STATUS_E_FAILURE;
26907 }
26908 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026909 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026910
26911 /*-----------------------------------------------------------------------
26912 Get message buffer
26913 -----------------------------------------------------------------------*/
26914 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26915 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26916 &pSendBuffer, &usDataOffset, &usSendSize))||
26917 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26918 {
26919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26920 "Unable to get send buffer in Update Channel Params req %p",
26921 pwdiUpdateChanListParams);
26922 WDI_ASSERT(0);
26923 return WDI_STATUS_E_FAILURE;
26924 }
26925 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26926
26927 updateChannelParams->numChan = num_channels;
26928 wpalMemoryCopy(&updateChannelParams->chanParam,
26929 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26930 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26931
26932 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26933 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26934
26935 /*-------------------------------------------------------------------------
26936 Send Update channel request to fw
26937 -------------------------------------------------------------------------*/
26938 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26939 wdiUpdateChanParamsCb, pEventData->pUserData,
26940 WDI_UPDATE_CHAN_RESP);
26941}
26942
26943/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026944 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026945
26946 @param pWDICtx: pointer to the WLAN DAL context
26947 pEventData: pointer to the event information structure
26948
Jeff Johnson295189b2012-06-20 16:38:30 -070026949 @see
26950 @return Result of the function call
26951*/
26952WDI_Status
26953WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026954(
Jeff Johnson295189b2012-06-20 16:38:30 -070026955 WDI_ControlBlockType* pWDICtx,
26956 WDI_EventInfoType* pEventData
26957)
26958{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026959 WDI_LowLevelIndType wdiInd;
26960 tpPrefNetwFoundParams pNetwFoundParams;
26961 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026962
26963
26964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026965 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026966 -------------------------------------------------------------------------*/
26967 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26968 ( NULL == pEventData->pEventData ))
26969 {
26970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026971 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026972 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026974 }
26975
26976 /*-------------------------------------------------------------------------
26977 Extract indication and send it to UMAC
26978 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026979 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26980
26981 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26982 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26983 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26984
26985 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26986 {
26987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26988 "%s: fail to allocate memory", __func__);
26989 return WDI_STATUS_MEM_FAILURE;
26990 }
26991
26992 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26993 (pNetwFoundParams->ssId.length < 32 )?
26994 pNetwFoundParams->ssId.length : 32;
26995 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26996 pNetwFoundParams->ssId.ssId,
26997 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26998 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26999 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27000 pNetwFoundParams->frameLength;
27001 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27002 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27003 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027004
27005 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027006 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027007
Jeff Johnson295189b2012-06-20 16:38:30 -070027008 // DEBUG
27009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027010 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027011 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027012 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027013 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027014 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027015 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27016
ltimariub77f24b2013-01-24 18:54:33 -080027017 if ( pWDICtx->wdiLowLevelIndCB )
27018 {
27019 /*Notify UMAC*/
27020 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27021 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027022
27023 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027024}
27025
27026/**
27027 @brief Process PNO Rsp function (called when a
27028 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027029
27030 @param pWDICtx: pointer to the WLAN DAL context
27031 pEventData: pointer to the event information structure
27032
Jeff Johnson295189b2012-06-20 16:38:30 -070027033 @see
27034 @return Result of the function call
27035*/
27036WDI_Status
27037WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027038(
Jeff Johnson295189b2012-06-20 16:38:30 -070027039 WDI_ControlBlockType* pWDICtx,
27040 WDI_EventInfoType* pEventData
27041)
27042{
27043 WDI_Status wdiStatus;
27044 eHalStatus halStatus;
27045 WDI_PNOScanCb wdiPNOScanCb = NULL;
27046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27047
27048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027049 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027050 -------------------------------------------------------------------------*/
27051 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27052 ( NULL == pEventData->pEventData ))
27053 {
27054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027058 }
27059
27060
Jeff Johnsone7245742012-09-05 17:12:55 -070027061 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027062
27063 /*-------------------------------------------------------------------------
27064 Extract response and send it to UMAC
27065 -------------------------------------------------------------------------*/
27066 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027067 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027068
27069 /*Notify UMAC*/
27070 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27071
Jeff Johnsone7245742012-09-05 17:12:55 -070027072 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027073}/*WDI_ProcessSetPreferredNetworkRsp*/
27074
27075/**
27076 @brief Process RSSI Filter Rsp function (called when a
27077 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027078
27079 @param pWDICtx: pointer to the WLAN DAL context
27080 pEventData: pointer to the event information structure
27081
Jeff Johnson295189b2012-06-20 16:38:30 -070027082 @see
27083 @return Result of the function call
27084*/
27085WDI_Status
27086WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027087(
Jeff Johnson295189b2012-06-20 16:38:30 -070027088 WDI_ControlBlockType* pWDICtx,
27089 WDI_EventInfoType* pEventData
27090)
27091{
27092 WDI_Status wdiStatus;
27093 eHalStatus halStatus;
27094 WDI_RssiFilterCb wdiRssiFilterCb;
27095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27096
27097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027098 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027099 -------------------------------------------------------------------------*/
27100 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27101 ( NULL == pEventData->pEventData ))
27102 {
27103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027107 }
27108
Jeff Johnsone7245742012-09-05 17:12:55 -070027109 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027110
27111 /*-------------------------------------------------------------------------
27112 Extract response and send it to UMAC
27113 -------------------------------------------------------------------------*/
27114 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027115 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027116
27117 /*Notify UMAC*/
27118 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27119
Jeff Johnsone7245742012-09-05 17:12:55 -070027120 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027121}/*WDI_ProcessSetRssiFilterRsp*/
27122
27123/**
27124 @brief Process Update Scan Params Rsp function (called when a
27125 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027126
27127 @param pWDICtx: pointer to the WLAN DAL context
27128 pEventData: pointer to the event information structure
27129
Jeff Johnson295189b2012-06-20 16:38:30 -070027130 @see
27131 @return Result of the function call
27132*/
27133WDI_Status
27134WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027135(
Jeff Johnson295189b2012-06-20 16:38:30 -070027136 WDI_ControlBlockType* pWDICtx,
27137 WDI_EventInfoType* pEventData
27138)
27139{
27140 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027141 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027142 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027143 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27145
27146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027147 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027148 -------------------------------------------------------------------------*/
27149 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27150 ( NULL == pEventData->pEventData ))
27151 {
27152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027153 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027156 }
27157
27158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027159 "%s: Process UPD scan params ptr : %p",
27160 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027161
Jeff Johnsone7245742012-09-05 17:12:55 -070027162 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027163
27164 /*-------------------------------------------------------------------------
27165 Extract response and send it to UMAC
27166 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027167 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27168 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027169 sizeof(halUpdScanParams.status));
27170
27171 uStatus = halUpdScanParams.status;
27172
27173 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027174 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027175
27176 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027177 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027178
Jeff Johnsone7245742012-09-05 17:12:55 -070027179 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027180
27181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027182 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027183 halUpdScanParams.status);
27184
27185 /*Notify UMAC*/
27186 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27187
Jeff Johnsone7245742012-09-05 17:12:55 -070027188 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027189}
27190#endif // FEATURE_WLAN_SCAN_PNO
27191
27192#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027193WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027194WDI_8023MulticastListReq
27195(
27196 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27197 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27198 void* pUserData
27199)
27200{
27201 WDI_EventInfoType wdiEventData;
27202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27203
27204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027205 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027206
27207 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027208 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027209 ------------------------------------------------------------------------*/
27210 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27211 {
27212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27213 "WDI API call before module is initialized - Fail request");
27214
Jeff Johnsone7245742012-09-05 17:12:55 -070027215 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027216 }
27217
27218 /*------------------------------------------------------------------------
27219 Fill in Event data and post to the Main FSM
27220 ------------------------------------------------------------------------*/
27221 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027222 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027223 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027224 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027225 wdiEventData.pUserData = pUserData;
27226
27227 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27228}
27229
Jeff Johnsone7245742012-09-05 17:12:55 -070027230WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027231WDI_ReceiveFilterSetFilterReq
27232(
27233 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27234 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27235 void* pUserData
27236)
27237{
27238 WDI_EventInfoType wdiEventData;
27239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27240
27241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027242 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027243
27244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027245 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027246 ------------------------------------------------------------------------*/
27247 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27248 {
27249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27250 "WDI API call before module is initialized - Fail request");
27251
Jeff Johnsone7245742012-09-05 17:12:55 -070027252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027253 }
27254
27255 /*------------------------------------------------------------------------
27256 Fill in Event data and post to the Main FSM
27257 ------------------------------------------------------------------------*/
27258 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027259 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27260 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027261 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27262 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027263 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027264 wdiEventData.pUserData = pUserData;
27265
27266
27267 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27268}
27269
Jeff Johnsone7245742012-09-05 17:12:55 -070027270WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027271WDI_FilterMatchCountReq
27272(
27273 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27274 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27275 void* pUserData
27276)
27277{
27278 WDI_EventInfoType wdiEventData;
27279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27280
27281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027282 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027283
27284 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027285 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027286 ------------------------------------------------------------------------*/
27287 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27288 {
27289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27290 "WDI API call before module is initialized - Fail request");
27291
Jeff Johnsone7245742012-09-05 17:12:55 -070027292 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027293 }
27294
27295 /*------------------------------------------------------------------------
27296 Fill in Event data and post to the Main FSM
27297 ------------------------------------------------------------------------*/
27298 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027299 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027300 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027301 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027302 wdiEventData.pUserData = pUserData;
27303
27304
27305 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27306}
27307
Jeff Johnsone7245742012-09-05 17:12:55 -070027308WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027309WDI_ReceiveFilterClearFilterReq
27310(
27311 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27312 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27313 void* pUserData
27314)
27315{
27316 WDI_EventInfoType wdiEventData;
27317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27318
27319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027320 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027321
27322 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027323 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027324 ------------------------------------------------------------------------*/
27325 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27326 {
27327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27328 "WDI API call before module is initialized - Fail request");
27329
Jeff Johnsone7245742012-09-05 17:12:55 -070027330 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027331 }
27332
27333 /*------------------------------------------------------------------------
27334 Fill in Event data and post to the Main FSM
27335 ------------------------------------------------------------------------*/
27336 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027337 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027338 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027339 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027340 wdiEventData.pUserData = pUserData;
27341
27342
27343 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27344}
27345
27346/**
27347 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027348
27349 @param pWDICtx: pointer to the WLAN DAL context
27350 pEventData: pointer to the event information structure
27351
Jeff Johnson295189b2012-06-20 16:38:30 -070027352 @see
27353 @return Result of the function call
27354*/
27355WDI_Status
27356WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027357(
Jeff Johnson295189b2012-06-20 16:38:30 -070027358 WDI_ControlBlockType* pWDICtx,
27359 WDI_EventInfoType* pEventData
27360)
27361{
27362 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27363 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027364 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027365 wpt_uint16 usDataOffset = 0;
27366 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027367 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027368 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027369 wpt_uint8 ucCurrentBSSSesIdx = 0;
27370 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027371
27372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027373 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027374
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027375 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27376 if( NULL == pRcvFltMcAddrListType )
27377 {
27378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27379 "Failed to alloc in WDI_Process8023MulticastListReq");
27380 return WDI_STATUS_E_FAILURE;
27381 }
27382
Jeff Johnson295189b2012-06-20 16:38:30 -070027383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027385 -------------------------------------------------------------------------*/
27386 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027387 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027388 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027389 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027390 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27391 {
27392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027393 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027394 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027396 return WDI_STATUS_E_FAILURE;
27397 }
27398
27399 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27400 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27401 &pBSSSes);
27402 if ( NULL == pBSSSes )
27403 {
27404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027405 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027406 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027408 }
27409
27410 /*-----------------------------------------------------------------------
27411 Get message buffer
27412 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027413 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27414 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027415 sizeof(tHalRcvFltMcAddrListType),
27416 &pSendBuffer, &usDataOffset, &usSendSize))||
27417 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27418 {
27419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27420 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027421 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027422 pEventData, pwdiFltPktSetMcListReqParamsType,
27423 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027424 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027427 }
27428
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027429 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027430 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027431 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027432 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027433 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027434 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27435 sizeof(tSirMacAddr));
27436 }
27437
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027438 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027439 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027440 pRcvFltMcAddrListType,
27441 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027442
27443 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027444 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027445
27446
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027447 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027449 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027450 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027451 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027452 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027453 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027454}
27455
27456/**
27457 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027458
27459 @param pWDICtx: pointer to the WLAN DAL context
27460 pEventData: pointer to the event information structure
27461
Jeff Johnson295189b2012-06-20 16:38:30 -070027462 @see
27463 @return Result of the function call
27464*/
27465WDI_Status
27466WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027467(
Jeff Johnson295189b2012-06-20 16:38:30 -070027468 WDI_ControlBlockType* pWDICtx,
27469 WDI_EventInfoType* pEventData
27470)
27471{
27472 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27473 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027474 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027475 wpt_uint16 usDataOffset = 0;
27476 wpt_uint16 usSendSize = 0;
27477 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027478 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027479 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027480 wpt_uint8 ucCurrentBSSSesIdx = 0;
27481 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027482 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27483 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027484
27485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027486 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027487
27488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027489 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027490 -------------------------------------------------------------------------*/
27491 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027492 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027493 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027494 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027495 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27496 {
27497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027500 return WDI_STATUS_E_FAILURE;
27501 }
27502
27503 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27504 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27505 &pBSSSes);
27506 if ( NULL == pBSSSes )
27507 {
27508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027509 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027511 }
27512
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027513 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27514 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027515
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027516 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27517 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27518 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27519
27520 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27521 usSessRcvPktFilterCfgSize);
27522
27523 if(NULL == pSessRcvPktFilterCfg)
27524 {
27525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27526 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027527 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027528 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027529 WDI_ASSERT(0);
27530 return WDI_STATUS_E_FAILURE;
27531 }
27532
27533 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27534
27535 /*-----------------------------------------------------------------------
27536 Get message buffer
27537 -----------------------------------------------------------------------*/
27538
27539 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27540 usSessRcvPktFilterCfgSize,
27541 &pSendBuffer, &usDataOffset, &usSendSize))||
27542 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27543 {
27544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27545 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027546 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027547 pEventData, pwdiSetRcvPktFilterReqInfo,
27548 wdiReceiveFilterSetFilterCb);
27549 WDI_ASSERT(0);
27550 wpalMemoryFree(pSessRcvPktFilterCfg);
27551 return WDI_STATUS_E_FAILURE;
27552 }
27553
27554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027555 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027556 usSendSize,pSessRcvPktFilterCfg);
27557
27558 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27559 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27560 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27561 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27562
27563 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27564
27565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27566 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27567 pSessRcvPktFilterCfg->filterType);
27568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27569 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27570 pSessRcvPktFilterCfg->coleasceTime);
27571
27572 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27573 {
27574 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27575 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27576 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27577 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27578 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27579 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27580 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27581 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27582
27583 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27584 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27585 8);
27586 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27587 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27588 8);
27589
27590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027591 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027592 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27593 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27594
27595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027596 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027597 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27598 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27599
27600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027601 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027602 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27603 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27604 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27605 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27606 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27607 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27608
27609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027610 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027611 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27612 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27613 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27614 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27615 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27616 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27617 }
27618
27619 wpalMemoryCopy( pSendBuffer+usDataOffset,
27620 pSessRcvPktFilterCfg,
27621 usSessRcvPktFilterCfgSize);
27622
27623
27624 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27625 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27626
27627 wpalMemoryFree(pSessRcvPktFilterCfg);
27628
27629 }
27630 /*If SLM_SESSIONIZATION is not supported then do this */
27631 else
27632 {
27633 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27634 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27635 * sizeof(tHalRcvPktFilterParams));
27636
27637 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027638 usRcvPktFilterCfgSize);
27639
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027640 if(NULL == pRcvPktFilterCfg)
27641 {
27642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27643 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027644 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027645 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027646 WDI_ASSERT(0);
27647 return WDI_STATUS_E_FAILURE;
27648 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027649
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027650 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027651
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027652 /*-----------------------------------------------------------------------
27653 Get message buffer
27654 -----------------------------------------------------------------------*/
27655 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027656 usRcvPktFilterCfgSize,
27657 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027658 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27659 {
27660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027661 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027662 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027663 pEventData, pwdiSetRcvPktFilterReqInfo,
27664 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027665 WDI_ASSERT(0);
27666 wpalMemoryFree(pRcvPktFilterCfg);
27667 return WDI_STATUS_E_FAILURE;
27668 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027669
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027671 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027672 usSendSize,usRcvPktFilterCfgSize);
27673
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027674 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27675 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27676 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27677 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027678
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027680 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027681 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027683 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027684 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027685
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027686 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27687 {
27688 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27689 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27690 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27691 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27692 pRcvPktFilterCfg->paramsData[i].dataOffset =
27693 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27694 pRcvPktFilterCfg->paramsData[i].dataLength =
27695 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027696
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027697 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027698 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27699 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027700 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027701 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27702 8);
27703
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027705 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027706 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027707 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27708
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027710 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027711 pRcvPktFilterCfg->paramsData[i].dataOffset,
27712 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027713
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027715 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027716 pRcvPktFilterCfg->paramsData[i].compareData[0],
27717 pRcvPktFilterCfg->paramsData[i].compareData[1],
27718 pRcvPktFilterCfg->paramsData[i].compareData[2],
27719 pRcvPktFilterCfg->paramsData[i].compareData[3],
27720 pRcvPktFilterCfg->paramsData[i].compareData[4],
27721 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027722
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027724 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027725 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27726 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27727 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27728 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27729 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27730 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27731 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027732
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027733 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027734 pRcvPktFilterCfg,
27735 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027736
27737
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027738 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27739 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027740
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027742 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027743 wpalMemoryFree(pRcvPktFilterCfg);
27744 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027746 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027747 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027748 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027749 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027750 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027751}
27752
27753/**
27754 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027755
27756 @param pWDICtx: pointer to the WLAN DAL context
27757 pEventData: pointer to the event information structure
27758
Jeff Johnson295189b2012-06-20 16:38:30 -070027759 @see
27760 @return Result of the function call
27761*/
27762WDI_Status
27763WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027764(
Jeff Johnson295189b2012-06-20 16:38:30 -070027765 WDI_ControlBlockType* pWDICtx,
27766 WDI_EventInfoType* pEventData
27767)
27768{
27769 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27770 NULL;
27771 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27772 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027773 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027774 wpt_uint16 usDataOffset = 0;
27775 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027776 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27777 wpt_uint8 ucCurrentBSSSesIdx = 0;
27778 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027779
27780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027781 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027782
27783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027785 -------------------------------------------------------------------------*/
27786 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027787 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027788 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027789 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027790 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27791 {
27792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027796 }
27797
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027798 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27799 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27800 &pBSSSes);
27801 if ( NULL == pBSSSes )
27802 {
27803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027804 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027805 return WDI_STATUS_E_FAILURE;
27806 }
27807
Jeff Johnson295189b2012-06-20 16:38:30 -070027808 /*-----------------------------------------------------------------------
27809 Get message buffer
27810 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27812 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027813 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027814 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027815 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027816 {
27817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27818 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027819 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027820 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27821 wdiFilterMatchCountCb);
27822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027824 }
27825
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027826 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27827 wpalMemoryCopy( pSendBuffer+usDataOffset,
27828 &rcvFltPktMatchCntReqParam,
27829 sizeof(rcvFltPktMatchCntReqParam));
27830
Jeff Johnson295189b2012-06-20 16:38:30 -070027831 //
27832 // Don't need to fill send buffer other than header
27833 //
27834 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027835 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027836
27837
27838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027839 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027840 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027841 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27842 wdiFilterMatchCountCb,
27843 pEventData->pUserData,
27844 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027845}
27846
27847/**
27848 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027849
27850 @param pWDICtx: pointer to the WLAN DAL context
27851 pEventData: pointer to the event information structure
27852
Jeff Johnson295189b2012-06-20 16:38:30 -070027853 @see
27854 @return Result of the function call
27855*/
27856WDI_Status
27857WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027858(
Jeff Johnson295189b2012-06-20 16:38:30 -070027859 WDI_ControlBlockType* pWDICtx,
27860 WDI_EventInfoType* pEventData
27861)
Jeff Johnsone7245742012-09-05 17:12:55 -070027862{
Jeff Johnson295189b2012-06-20 16:38:30 -070027863 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27864 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027865 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027866 wpt_uint16 usDataOffset = 0;
27867 wpt_uint16 usSendSize = 0;
27868 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027869 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027870 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027871
27872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027873 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027874
27875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027877 -------------------------------------------------------------------------*/
27878 if (( NULL == pEventData ) ||
27879 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27880 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027881 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027882 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27883 {
27884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027887 return WDI_STATUS_E_FAILURE;
27888 }
27889
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027890 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027891 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27892 &pBSSSes);
27893 if ( NULL == pBSSSes )
27894 {
27895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027896 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027898 }
27899
27900 /*-----------------------------------------------------------------------
27901 Get message buffer
27902 -----------------------------------------------------------------------*/
27903 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027904 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027905 sizeof(tHalRcvFltPktClearParam),
27906 &pSendBuffer, &usDataOffset, &usSendSize))||
27907 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27908 {
27909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27910 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027911 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027912 pEventData, pwdiRcvFltPktClearReqParamsType,
27913 wdiRcvFltPktClearFilterCb);
27914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027916 }
27917
27918
27919 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027920 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027921 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027922 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027923
Jeff Johnsone7245742012-09-05 17:12:55 -070027924 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27925 wpalMemoryCopy( pSendBuffer+usDataOffset,
27926 &rcvFltPktClearParam,
27927 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027928
27929 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027930 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027931
27932
27933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027934 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027935 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027936 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027937 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027938 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027939}
27940
27941/**
27942 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027943
27944 @param pWDICtx: pointer to the WLAN DAL context
27945 pEventData: pointer to the event information structure
27946
Jeff Johnson295189b2012-06-20 16:38:30 -070027947 @see
27948 @return Result of the function call
27949*/
27950WDI_Status
27951WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027952(
Jeff Johnson295189b2012-06-20 16:38:30 -070027953 WDI_ControlBlockType* pWDICtx,
27954 WDI_EventInfoType* pEventData
27955)
27956{
Jeff Johnson295189b2012-06-20 16:38:30 -070027957 eHalStatus halStatus;
27958 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027959 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27960 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27962
27963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027964 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027965
27966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027968 -------------------------------------------------------------------------*/
27969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27970 ( NULL == pEventData->pEventData ))
27971 {
27972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027976 }
27977
Jeff Johnsone7245742012-09-05 17:12:55 -070027978 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027979
27980 /*-------------------------------------------------------------------------
27981 Extract response and send it to UMAC
27982 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027983 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27984 {
27985 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27986 pEventData->pEventData,
27987 sizeof(halRcvFltPktSetMcListRsp));
27988
27989 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27990 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27991 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27992 halRcvFltPktSetMcListRsp.bssIdx;
27993 }
27994 else
27995 {
27996 halStatus = *((eHalStatus*)pEventData->pEventData);
27997 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27998 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027999
28000 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028001 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028002
Jeff Johnsone7245742012-09-05 17:12:55 -070028003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028004}
28005
28006/**
28007 @brief Process Set Rsp function (called when a
28008 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028009
28010 @param pWDICtx: pointer to the WLAN DAL context
28011 pEventData: pointer to the event information structure
28012
Jeff Johnson295189b2012-06-20 16:38:30 -070028013 @see
28014 @return Result of the function call
28015*/
28016WDI_Status
28017WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028018(
Jeff Johnson295189b2012-06-20 16:38:30 -070028019 WDI_ControlBlockType* pWDICtx,
28020 WDI_EventInfoType* pEventData
28021)
28022{
Jeff Johnson295189b2012-06-20 16:38:30 -070028023 eHalStatus halStatus;
28024 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028025 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28026 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28028
28029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028030 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028031
28032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028034 -------------------------------------------------------------------------*/
28035 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28036 ( NULL == pEventData->pEventData ))
28037 {
28038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028042 }
28043
28044 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028045 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028046
28047 /*-------------------------------------------------------------------------
28048 Extract response and send it to UMAC
28049 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028050 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28051 {
28052 wpalMemoryCopy( &halSetPktFilterRspParams,
28053 pEventData->pEventData,
28054 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028055
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028056 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28057 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28058 }
28059 else
28060 {
28061 halStatus = *((eHalStatus*)pEventData->pEventData);
28062 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28063 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028064 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028065 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028066
Jeff Johnsone7245742012-09-05 17:12:55 -070028067 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028068}
28069
28070/**
28071 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028072
28073 @param pWDICtx: pointer to the WLAN DAL context
28074 pEventData: pointer to the event information structure
28075
Jeff Johnson295189b2012-06-20 16:38:30 -070028076 @see
28077 @return Result of the function call
28078*/
28079WDI_Status
28080WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028081(
Jeff Johnson295189b2012-06-20 16:38:30 -070028082 WDI_ControlBlockType* pWDICtx,
28083 WDI_EventInfoType* pEventData
28084)
28085{
Jeff Johnson295189b2012-06-20 16:38:30 -070028086 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028087 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028088 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28089 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028090
28091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28092
28093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028094 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028095
28096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028098 -------------------------------------------------------------------------*/
28099 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28100 ( NULL == pEventData->pEventData ))
28101 {
28102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028106 }
28107
Jeff Johnsone7245742012-09-05 17:12:55 -070028108 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028109
28110 /*-------------------------------------------------------------------------
28111 Extract response and send it to UMAC
28112 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028113 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28114 {
28115 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28116 pEventData->pEventData,
28117 sizeof(halRcvFltrPktMatachRsp));
28118
28119 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28120 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28121 }
28122 else
28123 {
28124 halStatus = *((eHalStatus*)pEventData->pEventData);
28125 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28126 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028127
28128 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028129 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028130
Jeff Johnsone7245742012-09-05 17:12:55 -070028131 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028132}
28133
28134/**
28135 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028136
28137 @param pWDICtx: pointer to the WLAN DAL context
28138 pEventData: pointer to the event information structure
28139
Jeff Johnson295189b2012-06-20 16:38:30 -070028140 @see
28141 @return Result of the function call
28142*/
28143WDI_Status
28144WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028145(
Jeff Johnson295189b2012-06-20 16:38:30 -070028146 WDI_ControlBlockType* pWDICtx,
28147 WDI_EventInfoType* pEventData
28148)
28149{
Jeff Johnson295189b2012-06-20 16:38:30 -070028150 eHalStatus halStatus;
28151 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028152 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28153 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28155
28156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028157 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028158
28159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028161 -------------------------------------------------------------------------*/
28162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28163 ( NULL == pEventData->pEventData ))
28164 {
28165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028169 }
28170
28171 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028172 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028173
28174 /*-------------------------------------------------------------------------
28175 Extract response and send it to UMAC
28176 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028177 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28178 {
28179 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28180 pEventData->pEventData,
28181 sizeof(halRcvFltPktClearRspMsg));
28182
28183 wdiRcvFltPktClearRspParamsType.wdiStatus =
28184 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28185 wdiRcvFltPktClearRspParamsType.bssIdx =
28186 halRcvFltPktClearRspMsg.bssIdx;
28187 }
28188 else
28189 {
28190 halStatus = *((eHalStatus*)pEventData->pEventData);
28191 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28192 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028193
28194 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028195 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028196
Jeff Johnsone7245742012-09-05 17:12:55 -070028197 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028198}
28199#endif // WLAN_FEATURE_PACKET_FILTERING
28200
28201/**
28202 @brief Process Shutdown Rsp function
28203 There is no shutdown response comming from HAL
28204 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028205
Jeff Johnson295189b2012-06-20 16:38:30 -070028206 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028207 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028208
28209 @see
28210 @return Result of the function call
28211*/
28212WDI_Status
28213WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028214(
Jeff Johnson295189b2012-06-20 16:38:30 -070028215 WDI_ControlBlockType* pWDICtx,
28216 WDI_EventInfoType* pEventData
28217)
28218{
28219 /*There is no shutdown response comming from HAL - function just kept for
28220 simmetry */
28221 WDI_ASSERT(0);
28222 return WDI_STATUS_SUCCESS;
28223}/*WDI_ProcessShutdownRsp*/
28224
28225/**
28226 @brief WDI_SetPowerParamsReq
28227
Jeff Johnsone7245742012-09-05 17:12:55 -070028228 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028229 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028230
Jeff Johnson295189b2012-06-20 16:38:30 -070028231 wdiPowerParamsCb: callback for passing back the response
28232 of the Set Power Params operation received from the
28233 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028234
Jeff Johnson295189b2012-06-20 16:38:30 -070028235 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028236 callback
28237
Jeff Johnson295189b2012-06-20 16:38:30 -070028238 @return Result of the function call
28239*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028240WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028241WDI_SetPowerParamsReq
28242(
28243 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28244 WDI_SetPowerParamsCb wdiPowerParamsCb,
28245 void* pUserData
28246)
28247{
28248 WDI_EventInfoType wdiEventData;
28249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28250
28251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028252 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028253 ------------------------------------------------------------------------*/
28254 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28255 {
28256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28257 "WDI API call before module is initialized - Fail request");
28258
Jeff Johnsone7245742012-09-05 17:12:55 -070028259 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028260 }
28261
28262 /*------------------------------------------------------------------------
28263 Fill in Event data and post to the Main FSM
28264 ------------------------------------------------------------------------*/
28265 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028266 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028267 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028268 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028269 wdiEventData.pUserData = pUserData;
28270
28271 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28272}/*WDI_SetPowerParamsReq*/
28273
28274/**
28275 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028276
28277 @param pWDICtx: pointer to the WLAN DAL context
28278 pEventData: pointer to the event information structure
28279
Jeff Johnson295189b2012-06-20 16:38:30 -070028280 @see
28281 @return Result of the function call
28282*/
28283WDI_Status
28284WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028285(
Jeff Johnson295189b2012-06-20 16:38:30 -070028286 WDI_ControlBlockType* pWDICtx,
28287 WDI_EventInfoType* pEventData
28288)
28289{
28290 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28291 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028292 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028293 wpt_uint16 usDataOffset = 0;
28294 wpt_uint16 usSendSize = 0;
28295 tSetPowerParamsType powerParams;
28296
28297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028299 -------------------------------------------------------------------------*/
28300 if (( NULL == pEventData ) ||
28301 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28302 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28303 {
28304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028308 }
28309
28310 /*-----------------------------------------------------------------------
28311 Get message buffer
28312 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028313 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028314 sizeof(powerParams),
28315 &pSendBuffer, &usDataOffset, &usSendSize))||
28316 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28317 {
28318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028319 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028320 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028323 }
28324
28325 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028326 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028327 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28328
28329 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028330 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028331 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28332
28333 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028334 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028335 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28336
28337 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028338 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028339 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28340
28341 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028342 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028343 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28344
28345 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028346 powerParams.uBETInterval =
28347 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028348
Yue Mac24062f2013-05-13 17:01:29 -070028349 /* MAX LI for modulated DTIM */
28350 powerParams.uMaxLIModulatedDTIM =
28351 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028352
28353 wpalMemoryCopy( pSendBuffer+usDataOffset,
28354 &powerParams,
28355 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028356
28357 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028358 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028359
28360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028361 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028362 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028363 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28364 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028365}
28366
28367/**
28368 @brief Process Power Params Rsp function (called when a
28369 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028370
28371 @param pWDICtx: pointer to the WLAN DAL context
28372 pEventData: pointer to the event information structure
28373
Jeff Johnson295189b2012-06-20 16:38:30 -070028374 @see
28375 @return Result of the function call
28376*/
28377WDI_Status
28378WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028379(
Jeff Johnson295189b2012-06-20 16:38:30 -070028380 WDI_ControlBlockType* pWDICtx,
28381 WDI_EventInfoType* pEventData
28382)
28383{
28384 WDI_Status wdiStatus;
28385 eHalStatus halStatus;
28386 WDI_SetPowerParamsCb wdiPowerParamsCb;
28387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28388
28389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028391 -------------------------------------------------------------------------*/
28392 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28393 ( NULL == pEventData->pEventData ))
28394 {
28395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028399 }
28400
Jeff Johnsone7245742012-09-05 17:12:55 -070028401 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028402
28403 /*-------------------------------------------------------------------------
28404 Extract response and send it to UMAC
28405 -------------------------------------------------------------------------*/
28406 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028407 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028408
28409 /*Notify UMAC*/
28410 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28411
Jeff Johnsone7245742012-09-05 17:12:55 -070028412 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028413}/*WDI_ProcessSetPowerParamsRsp*/
28414
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028415/**
28416 @brief WDI_dhcpStartInd
28417 Host will send an event to the FW when DHCP is initiated
28418
28419 @param
28420 WDI_DHCPInd: DHCP Indication
28421 @see
28422 @return Result of the function call
28423*/
28424WDI_Status
28425WDI_dhcpStartInd
28426(
28427 WDI_DHCPInd *wdiDHCPInd
28428)
28429{
28430 WDI_EventInfoType wdiEventData;
28431
28432 /*------------------------------------------------------------------------
28433 Sanity Check
28434 ------------------------------------------------------------------------*/
28435 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28436 {
28437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28438 "WDI API call before module is initialized - Fail request");
28439
28440 return WDI_STATUS_E_NOT_ALLOWED;
28441 }
28442
28443 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28444 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028445 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028446 wdiEventData.pCBfnc = NULL;
28447 wdiEventData.pUserData = NULL;
28448
28449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28450}
28451
28452
28453/**
28454 @brief WDI_dhcpStopInd
28455 Host will send an event to the FW when DHCP is completed
28456
28457 @param
28458 WDI_DHCPInd: DHCP Indication
28459 @see
28460 @return Result of the function call
28461*/
28462WDI_Status
28463WDI_dhcpStopInd
28464(
28465 WDI_DHCPInd *wdiDHCPInd
28466)
28467{
28468 WDI_EventInfoType wdiEventData;
28469
28470 /*------------------------------------------------------------------------
28471 Sanity Check
28472 ------------------------------------------------------------------------*/
28473 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28474 {
28475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28476 "WDI API call before module is initialized - Fail request");
28477
28478 return WDI_STATUS_E_NOT_ALLOWED;
28479 }
28480
28481 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28482 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028483 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028484 wdiEventData.pCBfnc = NULL;
28485 wdiEventData.pUserData = NULL;
28486
28487 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28488}
28489
28490
28491/**
28492 @brief Process DHCP Start Indication message and post it to HAL
28493
28494 @param pWDICtx: pointer to the WLAN DAL context
28495 pEventData: pointer to the event information structure
28496
28497 @see
28498 @return Result of the function call
28499*/
28500WDI_Status
28501WDI_ProcessDHCPStartInd
28502(
28503 WDI_ControlBlockType* pWDICtx,
28504 WDI_EventInfoType* pEventData
28505)
28506{
28507 wpt_uint8* pSendBuffer = NULL;
28508 wpt_uint16 usDataOffset = 0;
28509 wpt_uint16 usSendSize = 0;
28510 wpt_uint16 usLen = 0;
28511 WDI_DHCPInd* pwdiDHCPInd = NULL;
28512 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028513 WDI_Status wdiStatus;
28514
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028515
28516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28517
28518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28519 "%s", __func__);
28520
28521 /*-------------------------------------------------------------------------
28522 Sanity check
28523 -------------------------------------------------------------------------*/
28524 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28525 {
28526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28527 "%s: Invalid parameters", __func__);
28528 WDI_ASSERT(0);
28529 return WDI_STATUS_E_FAILURE;
28530 }
28531 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28532 /*-----------------------------------------------------------------------
28533 Get message buffer
28534 -----------------------------------------------------------------------*/
28535
28536 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28537 WDI_DHCP_START_IND,
28538 sizeof(tDHCPInfo),
28539 &pSendBuffer, &usDataOffset, &usSendSize))||
28540 ( usSendSize < (usDataOffset + usLen )))
28541 {
28542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28543 "Unable to get send buffer in DHCP Start req %p ",
28544 pEventData);
28545 WDI_ASSERT(0);
28546 return WDI_STATUS_E_FAILURE;
28547 }
28548
Sandeep Puligillaee789512014-02-13 19:14:52 +053028549 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028550 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28551 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28552 WDI_MAC_ADDR_LEN);
28553
28554 pWDICtx->pReqStatusUserData = NULL;
28555 pWDICtx->pfncRspCB = NULL;
28556
28557 /*-------------------------------------------------------------------------
28558 Send DHCP Start Indication to HAL
28559 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028560 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28561 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028562}/*WDI_ProcessDHCPStartInd*/
28563
28564/**
28565 @brief Process DHCP Stop indication message and post it to HAL
28566
28567 @param pWDICtx: pointer to the WLAN DAL context
28568 pEventData: pointer to the event information structure
28569
28570 @see
28571 @return Result of the function call
28572*/
28573WDI_Status
28574WDI_ProcessDHCPStopInd
28575(
28576 WDI_ControlBlockType* pWDICtx,
28577 WDI_EventInfoType* pEventData
28578)
28579{
28580 wpt_uint8* pSendBuffer = NULL;
28581 wpt_uint16 usDataOffset = 0;
28582 wpt_uint16 usSendSize = 0;
28583 wpt_uint16 usLen = 0;
28584 WDI_DHCPInd* pwdiDHCPInd = NULL;
28585 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028586 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028587
28588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28589
28590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28591 "%s", __func__);
28592
28593 /*-------------------------------------------------------------------------
28594 Sanity check
28595 -------------------------------------------------------------------------*/
28596
28597 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28598 {
28599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28600 "%s: Invalid parameters", __func__);
28601 WDI_ASSERT(0);
28602 return WDI_STATUS_E_FAILURE;
28603 }
28604 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28605 /*-----------------------------------------------------------------------
28606 Get message buffer
28607 -----------------------------------------------------------------------*/
28608
28609 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28610 WDI_DHCP_STOP_IND,
28611 sizeof(tDHCPInfo),
28612 &pSendBuffer, &usDataOffset, &usSendSize))||
28613 ( usSendSize < (usDataOffset + usLen )))
28614 {
28615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28616 "Unable to get send buffer in DHCP Start req %p ",
28617 pEventData);
28618 WDI_ASSERT(0);
28619 return WDI_STATUS_E_FAILURE;
28620 }
28621
Sandeep Puligillaee789512014-02-13 19:14:52 +053028622 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028623 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28624 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28625 WDI_MAC_ADDR_LEN);
28626
28627 pWDICtx->pReqStatusUserData = NULL;
28628 pWDICtx->pfncRspCB = NULL;
28629 /*-------------------------------------------------------------------------
28630 Send DHCP Stop indication to HAL
28631 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028632 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28633 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028634
28635}/*WDI_ProcessDHCPStopInd*/
28636
28637
Jeff Johnson295189b2012-06-20 16:38:30 -070028638#ifdef WLAN_FEATURE_GTK_OFFLOAD
28639/**
28640 @brief WDI_GTKOffloadReq will be called when the upper MAC
28641 wants to set GTK Rekey Counter while in power save. Upon
28642 the call of this API the WLAN DAL will pack and send a
28643 HAL GTK offload request message to the lower RIVA
28644 sub-system if DAL is in state STARTED.
28645
28646 In state BUSY this request will be queued. Request won't
28647 be allowed in any other state.
28648
28649 WDI_PostAssocReq must have been called.
28650
28651 @param pwdiGtkOffloadParams: the GTK offload as specified
28652 by the Device Interface
28653
28654 wdiGtkOffloadCb: callback for passing back the response
28655 of the GTK offload operation received from the device
28656
28657 pUserData: user data will be passed back with the
28658 callback
28659
28660 @see WDI_PostAssocReq
28661 @return Result of the function call
28662*/
28663WDI_Status
28664WDI_GTKOffloadReq
28665(
28666 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28667 WDI_GtkOffloadCb wdiGtkOffloadCb,
28668 void* pUserData
28669)
28670{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028671 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28673
28674 /*------------------------------------------------------------------------
28675 Sanity Check
28676 ------------------------------------------------------------------------*/
28677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28678 {
28679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28680 "WDI API call before module is initialized - Fail request");
28681
28682 return WDI_STATUS_E_NOT_ALLOWED;
28683 }
28684
28685 /*------------------------------------------------------------------------
28686 Fill in Event data and post to the Main FSM
28687 ------------------------------------------------------------------------*/
28688 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28689 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028690 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028691 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28692 wdiEventData.pUserData = pUserData;
28693
28694 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28695}
28696
28697
28698/**
28699 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28700 MAC wants to get GTK Rekey Counter while in power save.
28701 Upon the call of this API the WLAN DAL will pack and
28702 send a HAL GTK offload request message to the lower RIVA
28703 sub-system if DAL is in state STARTED.
28704
28705 In state BUSY this request will be queued. Request won't
28706 be allowed in any other state.
28707
28708 WDI_PostAssocReq must have been called.
28709
28710 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28711 Information Message as specified by the
28712 Device Interface
28713
28714 wdiGtkOffloadGetInfoCb: callback for passing back the
28715 response of the GTK offload operation received from the
28716 device
28717
28718 pUserData: user data will be passed back with the
28719 callback
28720
28721 @see WDI_PostAssocReq
28722 @return Result of the function call
28723*/
28724WDI_Status
28725WDI_GTKOffloadGetInfoReq
28726(
28727 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28728 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28729 void* pUserData
28730)
28731{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028732 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28734
28735 /*------------------------------------------------------------------------
28736 Sanity Check
28737 ------------------------------------------------------------------------*/
28738 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28739 {
28740 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28741 "WDI API call before module is initialized - Fail request");
28742
28743 return WDI_STATUS_E_NOT_ALLOWED;
28744 }
28745
28746 /*------------------------------------------------------------------------
28747 Fill in Event data and post to the Main FSM
28748 ------------------------------------------------------------------------*/
28749 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28750 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28751 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28752 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28753 wdiEventData.pUserData = pUserData;
28754
28755 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28756}
28757
28758
28759/**
28760 @brief Process set GTK Offload Request function
28761
28762 @param pWDICtx: pointer to the WLAN DAL context
28763 pEventData: pointer to the event information structure
28764
28765 @see
28766 @return Result of the function call
28767*/
28768WDI_Status
28769WDI_ProcessGTKOffloadReq
28770(
28771 WDI_ControlBlockType* pWDICtx,
28772 WDI_EventInfoType* pEventData
28773)
28774{
28775 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28776 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28777 wpt_uint8* pSendBuffer = NULL;
28778 wpt_uint16 usDataOffset = 0;
28779 wpt_uint16 usSendSize = 0;
28780 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028781 wpt_uint8 ucCurrentSessionId = 0;
28782 WDI_BSSSessionType* pBSSSes = NULL;
28783
Jeff Johnson295189b2012-06-20 16:38:30 -070028784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28785
28786 /*-------------------------------------------------------------------------
28787 Sanity check
28788 -------------------------------------------------------------------------*/
28789 if (( NULL == pEventData ) ||
28790 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28791 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28792 {
28793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028795 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028796 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028797 }
28798
28799 /*-----------------------------------------------------------------------
28800 Get message buffer
28801 -----------------------------------------------------------------------*/
28802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28803 sizeof(gtkOffloadReqParams),
28804 &pSendBuffer, &usDataOffset, &usSendSize))||
28805 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28806 {
28807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028808 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028809 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28810 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028811 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028812 }
28813
28814 //
28815 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28816 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028817 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28818 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28819 &pBSSSes);
28820 if ( NULL == pBSSSes )
28821 {
28822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028823 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028824 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028825 }
28826
28827 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28828
Jeff Johnson295189b2012-06-20 16:38:30 -070028829 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28830 // Copy KCK
28831 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28832 // Copy KEK
28833 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28834 // Copy KeyReplayCounter
28835 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28836
28837 wpalMemoryCopy( pSendBuffer+usDataOffset,
28838 &gtkOffloadReqParams,
28839 sizeof(gtkOffloadReqParams));
28840
28841 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28842 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28843
28844 /*-------------------------------------------------------------------------
28845 Send Get STA Request to HAL
28846 -------------------------------------------------------------------------*/
28847 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28848 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028849
28850fail:
28851 // Release the message buffer so we don't leak
28852 wpalMemoryFree(pSendBuffer);
28853
28854failRequest:
28855 //WDA should have failure check to avoid the memory leak
28856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028857}
28858
28859
28860/**
28861 @brief Process GTK Offload Get Information Request function
28862
28863 @param pWDICtx: pointer to the WLAN DAL context
28864 pEventData: pointer to the event information structure
28865
28866 @see
28867 @return Result of the function call
28868*/
28869WDI_Status
28870WDI_ProcessGTKOffloadGetInfoReq
28871(
28872 WDI_ControlBlockType* pWDICtx,
28873 WDI_EventInfoType* pEventData
28874)
28875{
28876 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28877 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28878 wpt_uint8* pSendBuffer = NULL;
28879 wpt_uint16 usDataOffset = 0;
28880 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028881 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28882 wpt_uint8 ucCurrentSessionId = 0;
28883 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028884
28885 /*-------------------------------------------------------------------------
28886 Sanity check
28887 -------------------------------------------------------------------------*/
28888 if (( NULL == pEventData ) ||
28889 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28890 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28891 {
28892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028894 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028895 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028896 }
28897
28898 /*-----------------------------------------------------------------------
28899 Get message buffer
28900 -----------------------------------------------------------------------*/
28901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028902 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028903 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028904 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028905 {
28906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028907 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028908 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28909 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028910 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028911 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028912 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28913 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28914 &pBSSSes);
28915 if ( NULL == pBSSSes )
28916 {
28917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028918 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028919 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028920 }
28921 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028922
28923 //
28924 // Don't need to fill send buffer other than header
28925 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028926 wpalMemoryCopy( pSendBuffer+usDataOffset,
28927 &halGtkOffloadGetInfoReqParams,
28928 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028929
28930 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28931 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28932
28933 /*-------------------------------------------------------------------------
28934 Send Get STA Request to HAL
28935 -------------------------------------------------------------------------*/
28936 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28937 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028938fail:
28939 // Release the message buffer so we don't leak
28940 wpalMemoryFree(pSendBuffer);
28941
28942failRequest:
28943 //WDA should have failure check to avoid the memory leak
28944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028945}
28946
28947/**
28948 @brief Process host offload Rsp function (called when a
28949 response is being received over the bus from HAL)
28950
28951 @param pWDICtx: pointer to the WLAN DAL context
28952 pEventData: pointer to the event information structure
28953
28954 @see
28955 @return Result of the function call
28956*/
28957WDI_Status
28958WDI_ProcessGtkOffloadRsp
28959(
28960 WDI_ControlBlockType* pWDICtx,
28961 WDI_EventInfoType* pEventData
28962)
28963{
Jeff Johnson295189b2012-06-20 16:38:30 -070028964 eHalStatus halStatus;
28965 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028966 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28967 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028968
28969 /*-------------------------------------------------------------------------
28970 Sanity check
28971 -------------------------------------------------------------------------*/
28972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28973 ( NULL == pEventData->pEventData))
28974 {
28975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028977 WDI_ASSERT(0);
28978 return WDI_STATUS_E_FAILURE;
28979 }
28980
Wilson Yang00256342013-10-10 23:13:38 -070028981 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28982
Jeff Johnson295189b2012-06-20 16:38:30 -070028983 /*-------------------------------------------------------------------------
28984 Extract response and send it to UMAC
28985 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028986 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28987 {
28988 wpalMemoryCopy( &halGtkOffloadRspParams,
28989 pEventData->pEventData,
28990 sizeof(halGtkOffloadRspParams));
28991
28992 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028993 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028994 wdiGtkOffloadRsparams.bssIdx =
28995 halGtkOffloadRspParams.bssIdx;
28996 }
28997 else
28998 {
28999 halStatus = *((eHalStatus*)pEventData->pEventData);
29000 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29001 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029002
29003 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029004 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029005
29006 return WDI_STATUS_SUCCESS;
29007}
29008
29009/**
29010 @brief Process GTK Offload Get Information Response function
29011
29012 @param pWDICtx: pointer to the WLAN DAL context
29013 pEventData: pointer to the event information structure
29014
29015 @see
29016 @return Result of the function call
29017*/
29018WDI_Status
29019WDI_ProcessGTKOffloadGetInfoRsp
29020(
29021 WDI_ControlBlockType* pWDICtx,
29022 WDI_EventInfoType* pEventData
29023)
29024{
Jeff Johnson295189b2012-06-20 16:38:30 -070029025 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029026 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029027 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29028 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029029 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029030
Jeff Johnson295189b2012-06-20 16:38:30 -070029031
29032 /*-------------------------------------------------------------------------
29033 Sanity check
29034 -------------------------------------------------------------------------*/
29035 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29036 ( NULL == pEventData->pEventData ))
29037 {
29038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029040 WDI_ASSERT(0);
29041 return WDI_STATUS_E_FAILURE;
29042 }
29043
Wilson Yang00256342013-10-10 23:13:38 -070029044 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29045
29046 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029047 Extract response and send it to UMAC
29048 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029049 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29050 {
29051 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29052 pEventData->pEventData,
29053 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029054
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029055 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029056 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029057 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29058 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29059 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29060 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29061 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29062 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29063 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29064 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029065
29066 wpalMutexAcquire(&pWDICtx->wptMutex);
29067 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29068 &pBSSSes);
29069
29070 if ( NULL == pBSSSes )
29071 {
29072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29073 "Association sequence for this BSS does not exist or "
29074 "association no longer in progress - mysterious HAL response");
29075 wpalMutexRelease(&pWDICtx->wptMutex);
29076 return WDI_STATUS_E_NOT_ALLOWED;
29077 }
29078
29079 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29080 sizeof (wpt_macAddr));
29081 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029082 }
29083 else
29084 {
29085 halStatus = *((eHalStatus*)pEventData->pEventData);
29086 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29087 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029088 /*Notify UMAC*/
29089 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29090 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029091 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029092
29093 return WDI_STATUS_SUCCESS;
29094}
29095#endif // WLAN_FEATURE_GTK_OFFLOAD
29096
29097#ifdef WLAN_WAKEUP_EVENTS
29098WDI_Status
29099WDI_ProcessWakeReasonInd
29100(
29101 WDI_ControlBlockType* pWDICtx,
29102 WDI_EventInfoType* pEventData
29103)
29104{
29105 WDI_LowLevelIndType *pWdiInd;
29106 tpWakeReasonParams pWakeReasonParams;
29107 wpt_uint32 allocSize = 0;
29108
29109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029110 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029111
29112 /*-------------------------------------------------------------------------
29113 Sanity check
29114 -------------------------------------------------------------------------*/
29115 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29116 ( NULL == pEventData->pEventData ))
29117 {
29118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029120 WDI_ASSERT( 0 );
29121 return WDI_STATUS_E_FAILURE;
29122 }
29123
29124 /*-------------------------------------------------------------------------
29125 Extract indication and send it to UMAC
29126 -------------------------------------------------------------------------*/
29127 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29128
29129 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29130
29131 //Allocate memory for WDI_WakeReasonIndType structure
29132 pWdiInd = wpalMemoryAllocate(allocSize) ;
29133
29134 if(NULL == pWdiInd)
29135 {
29136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029137 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029138 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029139 WDI_ASSERT(0);
29140 return WDI_STATUS_E_FAILURE;
29141 }
29142
29143 wpalMemoryZero(pWdiInd, allocSize);
29144
29145 /* Fill in the indication parameters*/
29146 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29147 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29148 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29149 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29150 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29151 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29152 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29153 &(pWakeReasonParams->aDataStart[0]),
29154 pWakeReasonParams->ulStoredDataLen);
29155
ltimariub77f24b2013-01-24 18:54:33 -080029156
29157 if ( pWDICtx->wdiLowLevelIndCB )
29158 {
29159 /*Notify UMAC*/
29160 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29161 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029162
29163 //Free memory allocated for WDI_WakeReasonIndType structure
29164 wpalMemoryFree(pWdiInd);
29165
29166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029167 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029168
29169 return WDI_STATUS_SUCCESS;
29170}
29171#endif // WLAN_WAKEUP_EVENTS
29172
29173void WDI_GetWcnssCompiledApiVersion
29174(
29175 WDI_WlanVersionType *pWcnssApiVersion
29176)
29177{
29178 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29179 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29180 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29181 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29182}
29183
29184/**
29185 @brief Process Set TM Level Rsp function (called when a
29186 response is being received over the bus from HAL)
29187
29188 @param pWDICtx: pointer to the WLAN DAL context
29189 pEventData: pointer to the event information structure
29190
29191 @see
29192 @return Result of the function call
29193*/
29194WDI_Status
29195WDI_ProcessSetTmLevelRsp
29196(
29197 WDI_ControlBlockType* pWDICtx,
29198 WDI_EventInfoType* pEventData
29199)
29200{
29201 WDI_Status wdiStatus;
29202 eHalStatus halStatus;
29203 WDI_SetTmLevelCb wdiSetTmLevelCb;
29204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29205
29206 /*-------------------------------------------------------------------------
29207 Sanity check
29208 -------------------------------------------------------------------------*/
29209 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29210 ( NULL == pEventData->pEventData ))
29211 {
29212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029213 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029214 WDI_ASSERT(0);
29215 return WDI_STATUS_E_FAILURE;
29216 }
29217
29218 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29219
29220 /*-------------------------------------------------------------------------
29221 Extract response and send it to UMAC
29222 -------------------------------------------------------------------------*/
29223 halStatus = *((eHalStatus*)pEventData->pEventData);
29224 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29225
29226 /*Notify UMAC*/
29227 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29228
29229 return WDI_STATUS_SUCCESS;
29230}/*WDI_ProcessSetTmLevelRsp*/
29231
29232/**
29233 @brief Process Set Thermal Mitigation level Changed request
29234
29235 @param pWDICtx: pointer to the WLAN DAL context
29236 pEventData: pointer to the event information structure
29237
29238 @see
29239 @return Result of the function call
29240*/
29241WDI_Status
29242WDI_ProcessSetTmLevelReq
29243(
29244 WDI_ControlBlockType* pWDICtx,
29245 WDI_EventInfoType* pEventData
29246)
29247{
29248 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29249 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29250 wpt_uint8* pSendBuffer = NULL;
29251 wpt_uint16 usDataOffset = 0;
29252 wpt_uint16 usSendSize = 0;
29253 tSetThermalMitgationType halTmMsg;
29254
29255 /*-------------------------------------------------------------------------
29256 Sanity check
29257 -------------------------------------------------------------------------*/
29258 if (( NULL == pEventData ) ||
29259 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29260 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29261 {
29262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029264 WDI_ASSERT(0);
29265 return WDI_STATUS_E_FAILURE;
29266 }
29267
29268 /*-----------------------------------------------------------------------
29269 Get message buffer
29270 -----------------------------------------------------------------------*/
29271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29272 sizeof(halTmMsg),
29273 &pSendBuffer, &usDataOffset, &usSendSize))||
29274 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29275 {
29276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029277 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029278 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29279 WDI_ASSERT(0);
29280 return WDI_STATUS_E_FAILURE;
29281 }
29282
29283 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29284 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29285
29286 wpalMemoryCopy( pSendBuffer+usDataOffset,
29287 &halTmMsg,
29288 sizeof(halTmMsg));
29289
29290 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29291 pWDICtx->pfncRspCB = NULL;
29292 /*-------------------------------------------------------------------------
29293 Send Get STA Request to HAL
29294 -------------------------------------------------------------------------*/
29295 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29296 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29297}
29298
29299/* Fill the value from the global features enabled array to the global capabilities
29300 * bitmap struct
29301 */
29302static void
29303FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29304{
29305 wpt_int8 i;
29306 for (i=0; i<len; i++)
29307 {
29308 setFeatCaps(fCaps, enabledFeat[i]);
29309 }
29310}
29311
29312/**
29313 @brief WDI_featureCapsExchangeReq
29314 Post feature capability bitmap exchange event.
29315 Host will send its own capability to FW in this req and
29316 expect FW to send its capability back as a bitmap in Response
29317
29318 @param
29319
29320 wdiFeatureCapsExchangeCb: callback called on getting the response.
29321 It is kept to mantain similarity between WDI reqs and if needed, can
29322 be used in future. Currently, It is set to NULL
29323
29324 pUserData: user data will be passed back with the
29325 callback
29326
29327 @see
29328 @return Result of the function call
29329*/
29330WDI_Status
29331WDI_featureCapsExchangeReq
29332(
29333 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29334 void* pUserData
29335)
29336{
29337 WDI_EventInfoType wdiEventData;
29338 wpt_int32 fCapsStructSize;
29339
29340 /*------------------------------------------------------------------------
29341 Sanity Check
29342 ------------------------------------------------------------------------*/
29343 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29344 {
29345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29346 "WDI API call before module is initialized - Fail request");
29347
29348 return WDI_STATUS_E_NOT_ALLOWED;
29349 }
29350
29351 /* Allocate memory separately for global variable carrying FW caps */
29352 fCapsStructSize = sizeof(tWlanFeatCaps);
29353 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29354 if ( NULL == gpHostWlanFeatCaps )
29355 {
29356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029357 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029358 WDI_ASSERT(0);
29359 return WDI_STATUS_MEM_FAILURE;
29360 }
29361
29362 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29363
29364 /*------------------------------------------------------------------------
29365 Fill in Event data and post to the Main FSM
29366 ------------------------------------------------------------------------*/
29367 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29368 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029370 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029371 gpHostWlanFeatCaps->featCaps[0],
29372 gpHostWlanFeatCaps->featCaps[1],
29373 gpHostWlanFeatCaps->featCaps[2],
29374 gpHostWlanFeatCaps->featCaps[3]
29375 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29377 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029378 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29379 wdiEventData.pEventData = gpHostWlanFeatCaps;
29380 wdiEventData.uEventDataSize = fCapsStructSize;
29381 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29382 wdiEventData.pUserData = pUserData;
29383
29384 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29385}
29386
29387/**
Yathish9f22e662012-12-10 14:21:35 -080029388 @brief Disable Active mode offload in Host
29389
29390 @param void
29391 @see
29392 @return void
29393*/
29394void
29395WDI_disableCapablityFeature(wpt_uint8 feature_index)
29396{
29397 supportEnabledFeatures[feature_index] = 0;
29398 return;
29399}
29400
29401/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029402 @brief Process Host-FW Capability Exchange Request function
29403
29404 @param pWDICtx: pointer to the WLAN DAL context
29405 pEventData: pointer to the event information structure
29406
29407 @see
29408 @return Result of the function call
29409*/
29410WDI_Status
29411WDI_ProcessFeatureCapsExchangeReq
29412(
29413 WDI_ControlBlockType* pWDICtx,
29414 WDI_EventInfoType* pEventData
29415)
29416{
29417 wpt_uint8* pSendBuffer = NULL;
29418 wpt_uint16 usDataOffset = 0;
29419 wpt_uint16 usSendSize = 0;
29420 wpt_uint16 usLen = 0;
29421
29422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29423
29424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029425 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029426
29427 /*-------------------------------------------------------------------------
29428 Sanity check
29429 -------------------------------------------------------------------------*/
29430 /* Call back function is NULL since not required for cap exchange req */
29431 if (( NULL == pEventData ) ||
29432 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29433 {
29434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029436 WDI_ASSERT(0);
29437 return WDI_STATUS_E_FAILURE;
29438 }
29439
29440 /*-----------------------------------------------------------------------
29441 Get message buffer
29442 -----------------------------------------------------------------------*/
29443 usLen = sizeof(tWlanFeatCaps);
29444
29445 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29446 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29447 usLen,
29448 &pSendBuffer, &usDataOffset, &usSendSize))||
29449 ( usSendSize < (usDataOffset + usLen )))
29450 {
29451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029452 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029453 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29454 WDI_ASSERT(0);
29455 return WDI_STATUS_E_FAILURE;
29456 }
29457
29458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029459 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029460 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29461 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29462 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29463 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29464 );
29465
29466 /* Copy host caps after the offset in the send buffer */
29467 wpalMemoryCopy( pSendBuffer+usDataOffset,
29468 (tWlanFeatCaps *)pEventData->pEventData,
29469 usLen);
29470
29471 /*-------------------------------------------------------------------------
29472 Send Start Request to HAL
29473 -------------------------------------------------------------------------*/
29474 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29475 (WDI_StartRspCb)pEventData->pCBfnc,
29476 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29477
29478}/*WDI_ProcessFeatureCapsExchangeReq*/
29479
29480/**
29481 @brief Process Host-FW Capability Exchange Response function
29482
29483 @param pWDICtx: pointer to the WLAN DAL context
29484 pEventData: pointer to the event information structure
29485
29486 @see
29487 @return Result of the function call
29488*/
29489WDI_Status
29490WDI_ProcessFeatureCapsExchangeRsp
29491(
29492 WDI_ControlBlockType* pWDICtx,
29493 WDI_EventInfoType* pEventData
29494)
29495{
29496 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29497 wpt_int32 fCapsStructSize;
29498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29499
29500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029501 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029502
29503 /*-------------------------------------------------------------------------
29504 Sanity check
29505 -------------------------------------------------------------------------*/
29506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29507 ( NULL == pEventData->pEventData ))
29508 {
29509 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029512 WDI_ASSERT(0);
29513 return WDI_STATUS_E_FAILURE;
29514 }
29515
29516 /* Allocate memory separately for global variable carrying FW caps */
29517 fCapsStructSize = sizeof(tWlanFeatCaps);
29518 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29519 if ( NULL == gpFwWlanFeatCaps )
29520 {
29521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029522 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029523 WDI_ASSERT(0);
29524 return WDI_STATUS_MEM_FAILURE;
29525 }
29526
29527 /*-------------------------------------------------------------------------
29528 Unpack HAL Response Message - the header was already extracted by the
29529 main Response Handling procedure
29530 -------------------------------------------------------------------------*/
29531 /*-------------------------------------------------------------------------
29532 Extract response and send it to UMAC
29533 -------------------------------------------------------------------------*/
29534
29535 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29536 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029538 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029539 gpFwWlanFeatCaps->featCaps[0],
29540 gpFwWlanFeatCaps->featCaps[1],
29541 gpFwWlanFeatCaps->featCaps[2],
29542 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029543 );
29544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29545 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029546 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29547
29548 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29549 if (wdiFeatureCapsExchangeCb != NULL)
29550 wdiFeatureCapsExchangeCb(NULL, NULL);
29551
29552 return WDI_STATUS_SUCCESS;
29553}
29554
Mohit Khanna4a70d262012-09-11 16:30:12 -070029555#ifdef WLAN_FEATURE_11AC
29556WDI_Status
29557WDI_ProcessUpdateVHTOpModeRsp
29558(
29559 WDI_ControlBlockType* pWDICtx,
29560 WDI_EventInfoType* pEventData
29561)
29562{
29563 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29564 WDI_Status wdiStatus;
29565 eHalStatus halStatus;
29566
29567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29568
29569 /*-------------------------------------------------------------------------
29570 Sanity check
29571 -------------------------------------------------------------------------*/
29572 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29573 ( NULL == pEventData->pEventData))
29574 {
29575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029576 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029577 WDI_ASSERT(0);
29578 return WDI_STATUS_E_FAILURE;
29579 }
29580 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29581
29582 /*-------------------------------------------------------------------------
29583 Extract response and send it to UMAC
29584 -------------------------------------------------------------------------*/
29585 halStatus = *((eHalStatus*)pEventData->pEventData);
29586 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29587
29588 /*Notify UMAC*/
29589 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29590
29591 return WDI_STATUS_SUCCESS;
29592}
29593#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029594/**
29595 @brief WDI_getHostWlanFeatCaps
29596 WDI API that returns whether the feature passed to it as enum value in
29597 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29598 variable storing host capability bitmap to find this. This can be used by
29599 other moduels to decide certain things like call different APIs based on
29600 whether a particular feature is supported.
29601
29602 @param
29603
29604 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29605
29606 @see
29607 @return
29608 0 - if the feature is NOT supported in host
29609 any non-zero value - if the feature is SUPPORTED in host.
29610*/
29611wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29612{
29613 wpt_uint8 featSupported = 0;
29614 if (gpHostWlanFeatCaps != NULL)
29615 {
29616 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29617 }
29618 else
29619 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029621 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029622 }
29623 return featSupported;
29624}
29625
29626/**
29627 @brief WDI_getFwWlanFeatCaps
29628 WDI API that returns whether the feature passed to it as enum value in
29629 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29630 variable storing host capability bitmap to find this. This can be used by
29631 other moduels to decide certain things like call different APIs based on
29632 whether a particular feature is supported.
29633
29634 @param
29635
29636 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29637 in wlan_hal_msg.h.
29638
29639 @see
29640 @return
29641 0 - if the feature is NOT supported in FW
29642 any non-zero value - if the feature is SUPPORTED in FW.
29643*/
29644wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29645{
29646 wpt_uint8 featSupported = 0;
29647 if (gpFwWlanFeatCaps != NULL)
29648 {
29649 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29650 }
29651 else
29652 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029654 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029655 }
29656 return featSupported;
29657}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029658
Katya Nigamf0511f62015-05-05 16:40:57 +053029659wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29660{
29661 /* 5gHz Channel */
29662 if( channel >= 34 && channel <= 165 )
29663 {
29664 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29665 {
29666 if ( channel== 36 || channel == 52 || channel == 100 ||
29667 channel == 116 || channel == 149 )
29668 {
29669 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29670 }
29671 else if ( channel == 40 || channel == 56 || channel == 104 ||
29672 channel == 120 || channel == 153 )
29673 {
29674 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29675 }
29676 else if ( channel == 44 || channel == 60 || channel == 108 ||
29677 channel == 124 || channel == 157 )
29678 {
29679 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29680 }
29681 else if ( channel == 48 || channel == 64 || channel == 112 ||
29682 channel == 128 || channel == 144 || channel == 161 )
29683 {
29684 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29685 }
29686 else if ( channel == 165 )
29687 {
29688 return PHY_SINGLE_CHANNEL_CENTERED;
29689 }
29690 }
29691
29692 else
29693 {
29694 if ( channel== 40 || channel == 48 || channel == 56 ||
29695 channel == 64 || channel == 104 || channel == 112 ||
29696 channel == 120 || channel == 128 || channel == 136 ||
29697 channel == 144 || channel == 153 || channel == 161 )
29698 {
29699 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29700 }
29701 else if ( channel== 36 || channel == 44 || channel == 52 ||
29702 channel == 60 || channel == 100 || channel == 108 ||
29703 channel == 116 || channel == 124 || channel == 132 ||
29704 channel == 140 || channel == 149 || channel == 157 )
29705 {
29706 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29707 }
29708 else if ( channel == 165 )
29709 {
29710 return PHY_SINGLE_CHANNEL_CENTERED;
29711 }
29712 }
29713 }
29714
29715 /* 2.4Ghz Channel */
29716 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
29717 {
29718 if (channel >= 1 && channel <= 7)
29719 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29720 else if (channel >= 8 && channel <= 13)
29721 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29722 else if (channel ==14)
29723 return PHY_SINGLE_CHANNEL_CENTERED;
29724 }
29725 return PHY_SINGLE_CHANNEL_CENTERED;
29726}
29727
Mohit Khanna4a70d262012-09-11 16:30:12 -070029728#ifdef WLAN_FEATURE_11AC
29729WDI_Status
29730WDI_ProcessUpdateVHTOpModeReq
29731(
29732 WDI_ControlBlockType* pWDICtx,
29733 WDI_EventInfoType* pEventData
29734)
29735{
29736 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29737 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29738 wpt_uint8* pSendBuffer = NULL;
29739 wpt_uint16 usDataOffset = 0;
29740 wpt_uint16 usSendSize = 0;
29741
29742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29743
29744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029745 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029746
29747 /*-------------------------------------------------------------------------
29748 Sanity check
29749 -------------------------------------------------------------------------*/
29750 if (( NULL == pEventData ) ||
29751 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29752 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29753 {
29754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029755 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029756 WDI_ASSERT(0);
29757 return WDI_STATUS_E_FAILURE;
29758 }
29759
29760 /*-----------------------------------------------------------------------
29761 Get message buffer
29762 -----------------------------------------------------------------------*/
29763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29764 sizeof(WDI_UpdateVHTOpMode),
29765 &pSendBuffer, &usDataOffset, &usSendSize))||
29766 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29767 {
29768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29769 "Unable to get send buffer in update vht opMode req");
29770 WDI_ASSERT(0);
29771 return WDI_STATUS_E_FAILURE;
29772 }
29773
29774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029775 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029776
29777 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29778 sizeof(WDI_UpdateVHTOpMode));
29779
29780 /*-------------------------------------------------------------------------
29781 Send Start Request to HAL
29782 -------------------------------------------------------------------------*/
29783 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29784 wdiVHTOpModeCb,
29785 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29786
29787}
29788
29789WDI_Status
29790WDI_UpdateVHTOpModeReq
29791(
29792 WDI_UpdateVHTOpMode *pData,
29793 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29794 void* pUserData
29795)
29796{
29797 WDI_EventInfoType wdiEventData;
29798
29799 /*------------------------------------------------------------------------
29800 Sanity Check
29801 ------------------------------------------------------------------------*/
29802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29803 {
29804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29805 "WDI API call before module is initialized - Fail request");
29806
29807 return WDI_STATUS_E_NOT_ALLOWED;
29808 }
29809
29810 /*------------------------------------------------------------------------
29811 Fill in Event data and post to the Main FSM
29812 ------------------------------------------------------------------------*/
29813 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29814 wdiEventData.pEventData = pData;
29815 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29816 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29817 wdiEventData.pUserData = pUserData;
29818
29819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029820 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029821
29822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29823
29824}
29825#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029826
29827/**
29828 @brief WDI_TransportChannelDebug -
29829 Display DXE Channel debugging information
29830 User may request to display DXE channel snapshot
29831 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029832
Jeff Johnsonb88db982012-12-10 13:34:59 -080029833 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029834 @param debugFlags : Enable stall detect features
29835 defined by WPAL_DeviceDebugFlags
29836 These features may effect
29837 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029838 @see
29839 @return none
29840*/
29841void WDI_TransportChannelDebug
29842(
29843 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029844 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029845)
29846{
Mihir Shete40a55652014-03-02 14:14:47 +053029847 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029848 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029849}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029850/**
29851 @brief WDI_SsrTimerCB
29852 Callback function for SSR timer, if this is called then the graceful
29853 shutdown for Riva did not happen.
29854
29855 @param pUserData : user data to timer
29856
29857 @see
29858 @return none
29859*/
29860void
29861WDI_SsrTimerCB
29862(
29863 void *pUserData
29864)
29865{
29866 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29868
29869 if (NULL == pWDICtx )
29870 {
29871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029872 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029873 WDI_ASSERT(0);
29874 return;
29875 }
29876 wpalRivaSubystemRestart();
29877
29878 return;
29879
29880}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029881
29882/**
29883 @brief WDI_SetEnableSSR -
29884 This API is called to enable/disable SSR on WDI timeout.
29885
29886 @param enableSSR : enable/disable SSR
29887
29888 @see
29889 @return none
29890*/
29891void WDI_SetEnableSSR(wpt_boolean enableSSR)
29892{
29893 gWDICb.bEnableSSR = enableSSR;
29894}
Leo Chang9056f462013-08-01 19:21:11 -070029895
29896
29897#ifdef FEATURE_WLAN_LPHB
29898/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029899 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029900 This function will be invoked when FW detects low power
29901 heart beat failure
29902
29903 @param pWDICtx : wdi context
29904 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029905 @see
29906 @return Result of the function call
29907*/
29908WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029909WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029910(
29911 WDI_ControlBlockType* pWDICtx,
29912 WDI_EventInfoType* pEventData
29913)
29914{
29915 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029916 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29918
29919 /*-------------------------------------------------------------------------
29920 Sanity check
29921 -------------------------------------------------------------------------*/
29922 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29923 (NULL == pEventData->pEventData))
29924 {
29925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29926 "%s: Invalid parameters", __func__);
29927 WDI_ASSERT(0);
29928 return WDI_STATUS_E_FAILURE;
29929 }
29930
29931 /*-------------------------------------------------------------------------
29932 Extract indication and send it to UMAC
29933 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029934 wpalMemoryCopy(&lphbIndicationParam,
29935 pEventData->pEventData,
29936 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029937
Leo Changd9df8aa2013-09-26 13:32:26 -070029938 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029939 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029940 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029941 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029942 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029943 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029944 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029945 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029946 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029947 /*Notify UMAC*/
29948 if (pWDICtx->wdiLowLevelIndCB)
29949 {
29950 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29951 }
29952
29953 return WDI_STATUS_SUCCESS;
29954}
29955
29956/**
29957 @brief WDI_ProcessLphbCfgRsp -
29958 LPHB configuration response from FW
29959
29960 @param pWDICtx : wdi context
29961 pEventData : indication data
29962
29963 @see
29964 @return Result of the function call
29965*/
29966WDI_Status WDI_ProcessLphbCfgRsp
29967(
29968 WDI_ControlBlockType* pWDICtx,
29969 WDI_EventInfoType* pEventData
29970)
29971{
29972 WDI_Status wdiStatus;
29973 eHalStatus halStatus;
29974 WDI_LphbCfgCb wdiLphbCfgCb;
29975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29976
29977 /*-------------------------------------------------------------------------
29978 Sanity check
29979 -------------------------------------------------------------------------*/
29980 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29981 (NULL == pEventData->pEventData))
29982 {
29983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29984 "%s: Invalid parameters", __func__);
29985 WDI_ASSERT(0);
29986 return WDI_STATUS_E_FAILURE;
29987 }
29988
29989 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29990
29991 /*-------------------------------------------------------------------------
29992 Extract response and send it to UMAC
29993 -------------------------------------------------------------------------*/
29994 halStatus = *((eHalStatus*)pEventData->pEventData);
29995 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29996
29997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29998 "LPHB Cfg Rsp Return status %d", wdiStatus);
29999 /*Notify UMAC*/
30000 if (NULL != wdiLphbCfgCb)
30001 {
30002 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30003 }
30004
30005 return WDI_STATUS_SUCCESS;
30006}
30007
30008/**
30009 @brief WDI_ProcessLPHBConfReq -
30010 LPHB configuration request to FW
30011
30012 @param pWDICtx : wdi context
30013 pEventData : indication data
30014
30015 @see
30016 @return none
30017*/
30018WDI_Status WDI_ProcessLPHBConfReq
30019(
30020 WDI_ControlBlockType* pWDICtx,
30021 WDI_EventInfoType* pEventData
30022)
30023{
30024 WDI_LPHBReq *pLphbReqParams;
30025 WDI_Status wdiStatus;
30026 wpt_uint8* pSendBuffer = NULL;
30027 wpt_uint16 usDataOffset = 0;
30028 wpt_uint16 usSendSize = 0;
30029 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30031
30032 /*-------------------------------------------------------------------------
30033 Sanity check
30034 -------------------------------------------------------------------------*/
30035 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30036 {
30037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30038 "%s: Invalid parameters in Suspend ind",__func__);
30039 WDI_ASSERT(0);
30040 return WDI_STATUS_E_FAILURE;
30041 }
30042
30043 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30044
30045 /*-----------------------------------------------------------------------
30046 Get message buffer
30047 -----------------------------------------------------------------------*/
30048 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30049 WDI_LPHB_CFG_REQ,
30050 sizeof(tHalLowPowerHeartBeatReqMsg),
30051 &pSendBuffer, &usDataOffset, &usSendSize))||
30052 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30053 {
30054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30055 "Unable to get send buffer in LPHB Ind ");
30056 WDI_ASSERT(0);
30057 return WDI_STATUS_E_FAILURE;
30058 }
30059
30060 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30061 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30062
30063 halLphbReqRarams->lowPowerHeartBeatCmdType =
30064 (tANI_U16)(++pLphbReqParams->cmd);
30065 switch ((tANI_U16)pLphbReqParams->cmd)
30066 {
30067 case WDI_LPHB_SET_EN_PARAMS_INDID:
30068 halLphbReqRarams->sessionIdx =
30069 pLphbReqParams->params.lphbEnableReq.session;
30070 halLphbReqRarams->options.control.heartBeatEnable =
30071 pLphbReqParams->params.lphbEnableReq.enable;
30072 halLphbReqRarams->options.control.heartBeatType =
30073 pLphbReqParams->params.lphbEnableReq.item;
30074 break;
30075
30076 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30077 halLphbReqRarams->sessionIdx =
30078 pLphbReqParams->params.lphbTcpParamReq.session;
30079 halLphbReqRarams->options.tcpParams.timeOutSec =
30080 pLphbReqParams->params.lphbTcpParamReq.timeout;
30081 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30082 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30083 sizeof(v_U32_t));
30084 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30085 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30086 sizeof(v_U32_t));
30087
30088 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30089 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30090 WDI_MAC_ADDR_LEN);
30091
30092 halLphbReqRarams->options.tcpParams.hostPort =
30093 pLphbReqParams->params.lphbTcpParamReq.src_port;
30094 halLphbReqRarams->options.tcpParams.destPort =
30095 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030096 halLphbReqRarams->options.tcpParams.timePeriodSec =
30097 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30098 halLphbReqRarams->options.tcpParams.tcpSn =
30099 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030100 break;
30101
30102 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30103 halLphbReqRarams->sessionIdx =
30104 pLphbReqParams->params.lphbTcpFilterReq.session;
30105 halLphbReqRarams->options.tcpUdpFilter.offset =
30106 pLphbReqParams->params.lphbTcpFilterReq.offset;
30107 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30108 pLphbReqParams->params.lphbTcpFilterReq.length;
30109 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30110 pLphbReqParams->params.lphbTcpFilterReq.filter,
30111 WDI_LPHB_FILTER_LEN);
30112 break;
30113
30114 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30115 halLphbReqRarams->sessionIdx =
30116 pLphbReqParams->params.lphbUdpParamReq.session;
30117 halLphbReqRarams->options.udpParams.timeOutSec =
30118 pLphbReqParams->params.lphbUdpParamReq.timeout;
30119 halLphbReqRarams->options.udpParams.timePeriodSec =
30120 pLphbReqParams->params.lphbUdpParamReq.interval;
30121 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30122 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30123 sizeof(v_U32_t));
30124 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30125 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30126 sizeof(v_U32_t));
30127
30128 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30129 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30130 WDI_MAC_ADDR_LEN);
30131
30132 halLphbReqRarams->options.udpParams.hostPort =
30133 pLphbReqParams->params.lphbUdpParamReq.src_port;
30134 halLphbReqRarams->options.udpParams.destPort =
30135 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30136 break;
30137
30138 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30139 halLphbReqRarams->sessionIdx =
30140 pLphbReqParams->params.lphbUdpFilterReq.session;
30141 halLphbReqRarams->options.tcpUdpFilter.offset =
30142 pLphbReqParams->params.lphbUdpFilterReq.offset;
30143 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30144 pLphbReqParams->params.lphbUdpFilterReq.length;
30145 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30146 pLphbReqParams->params.lphbUdpFilterReq.filter,
30147 WDI_LPHB_FILTER_LEN);
30148 break;
30149
30150 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30151 /* NA */
30152 break;
30153
30154 default:
30155 break;
30156 }
30157
30158 /*-------------------------------------------------------------------------
30159 Send Suspend Request to HAL
30160 -------------------------------------------------------------------------*/
30161 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30162 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30163
30164 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30165 usSendSize, pWDICtx->pfncRspCB,
30166 pWDICtx->pReqStatusUserData,
30167 WDI_LPHB_CFG_RESP);
30168
30169 return wdiStatus;
30170}
30171
30172/**
30173 @brief WDI_LPHBConfReq -
30174 LPHB configuration request API
30175
30176 @param lphbconfParam : configuration parameter
30177 usrData : client context
30178 lphbCfgCb : callback function pointer
30179
30180 @see
30181 @return Success or fail status code
30182*/
30183WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30184 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30185{
30186 WDI_EventInfoType wdiEventData;
30187
30188 /*------------------------------------------------------------------------
30189 Sanity Check
30190 ------------------------------------------------------------------------*/
30191 if (eWLAN_PAL_FALSE == gWDIInitialized)
30192 {
30193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30194 "WDI API call before module is initialized - Fail request");
30195
30196 return WDI_STATUS_E_NOT_ALLOWED;
30197 }
30198
30199 /*------------------------------------------------------------------------
30200 Fill in Event data and post to the Main FSM
30201 ------------------------------------------------------------------------*/
30202 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30203 wdiEventData.pEventData = lphbconfParam;
30204 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30205 wdiEventData.pCBfnc = lphbCfgCb;
30206 wdiEventData.pUserData = usrData;
30207
30208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30209}
30210#endif /* FEATURE_WLAN_LPHB */
30211
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030212/**
30213 @brief WDI_ProcessIbssPeerInactivityInd
30214 Process peer inactivity indication coming from HAL
30215
30216 @param pWDICtx: pointer to the WLAN DAL context
30217 pEventData: pointer to the event information structure
30218 @see
30219 @return Result of the function call
30220*/
30221WDI_Status
30222WDI_ProcessIbssPeerInactivityInd
30223(
30224 WDI_ControlBlockType* pWDICtx,
30225 WDI_EventInfoType* pEventData
30226)
30227{
30228 WDI_LowLevelIndType wdiInd;
30229 tIbssPeerInactivityIndMsg halIbssIndMsg;
30230
30231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30232
30233 /*-------------------------------------------------------------------------
30234 Sanity check
30235 -------------------------------------------------------------------------*/
30236 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30237 ( NULL == pEventData->pEventData ))
30238 {
30239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30240 "%s: Invalid parameters", __func__);
30241 WDI_ASSERT( 0 );
30242 return WDI_STATUS_E_FAILURE;
30243 }
30244
30245 /*-------------------------------------------------------------------------
30246 Extract indication and send it to UMAC
30247 -------------------------------------------------------------------------*/
30248 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30249 pEventData->pEventData,
30250 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30251
30252 /*Fill in the indication parameters*/
30253 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30254
30255 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30256 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30257
30258 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30259 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30260
30261 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30262 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30263 sizeof(tSirMacAddr));
30264
30265 /*Notify UMAC*/
30266 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30267
30268 return WDI_STATUS_SUCCESS;
30269
30270} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030271
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030272/**
30273*@brief WDI_RateUpdateInd will be called when the upper MAC
30274 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030275
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030276
30277 @param wdiRateUpdateIndParams:
30278
30279
30280 @see
30281 @return Result of the function call
30282*/
30283WDI_Status
30284WDI_RateUpdateInd
30285(
30286 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30287)
30288{
30289 WDI_EventInfoType wdiEventData;
30290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30291
30292 /*------------------------------------------------------------------------
30293 Sanity Check
30294 ------------------------------------------------------------------------*/
30295 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30296 {
30297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30298 "WDI API call before module is initialized - Fail request");
30299
30300 return WDI_STATUS_E_NOT_ALLOWED;
30301 }
30302
30303 /*------------------------------------------------------------------------
30304 Fill in Event data and post to the Main FSM
30305 ------------------------------------------------------------------------*/
30306 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30307 wdiEventData.pEventData = wdiRateUpdateIndParams;
30308 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30309 wdiEventData.pCBfnc = NULL;
30310 wdiEventData.pUserData = NULL;
30311
30312 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30313
30314}/* WDI_RateUpdateInd */
30315
30316/**
30317 @brief Process Rate Update Indication and post it to HAL
30318
30319 @param pWDICtx: pointer to the WLAN DAL context
30320 pEventData: pointer to the event information structure
30321
30322 @see
30323 @return Result of the function call
30324*/
30325WDI_Status
30326WDI_ProcessRateUpdateInd
30327(
30328 WDI_ControlBlockType* pWDICtx,
30329 WDI_EventInfoType* pEventData
30330)
30331{
30332 wpt_uint8* pSendBuffer = NULL;
30333 wpt_uint16 usDataOffset = 0;
30334 wpt_uint16 usSendSize = 0;
30335 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30336 tHalRateUpdateInd *pRateUpdateInd;
30337 WDI_Status wdiStatus;
30338
30339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30340
30341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30342 "%s", __func__);
30343
30344 /*-------------------------------------------------------------------------
30345 Sanity check
30346 -------------------------------------------------------------------------*/
30347 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30348 {
30349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30350 "%s: Invalid parameters", __func__);
30351 WDI_ASSERT(0);
30352 return WDI_STATUS_E_FAILURE;
30353 }
30354 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30355 /*-----------------------------------------------------------------------
30356 Get message buffer
30357 -----------------------------------------------------------------------*/
30358
30359 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30360 WDI_RATE_UPDATE_IND,
30361 sizeof(tHalRateUpdateParams),
30362 &pSendBuffer, &usDataOffset, &usSendSize))||
30363 ( usSendSize < (usDataOffset +
30364 sizeof(tHalRateUpdateParams) )))
30365 {
30366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30367 "Unable to get send buffer in Rate Update Indication %p ",
30368 pEventData);
30369 WDI_ASSERT(0);
30370 return WDI_STATUS_E_FAILURE;
30371 }
30372
30373 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30374
30375 /* Copy the bssid */
30376 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30377 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30378
30379 /* Copy the tx flags */
30380 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30381 pwdiRateUpdateInd->ucastDataRateTxFlag;
30382 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30383 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30384 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30385 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30386 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30387 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30388
30389 /* Copy the tx rates */
30390 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30391 pwdiRateUpdateInd->ucastDataRate;
30392 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30393 pwdiRateUpdateInd->reliableMcastDataRate;
30394 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30395 pwdiRateUpdateInd->mcastDataRate24GHz;
30396 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30397 pwdiRateUpdateInd->mcastDataRate5GHz;
30398
30399 /*-------------------------------------------------------------------------
30400 Send Rate Update Indication to HAL
30401 -------------------------------------------------------------------------*/
30402 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30403 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30404
30405 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30406
30407 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30408 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30409
30410} /* WDI_ProcessRateUpdateInd */
30411
30412#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030413/**
30414 @brief Process stop batch indication from WDA
30415
30416 @param pWDICtx: pointer to the WLAN DAL context
30417 pEventData: pointer to the event information structure
30418
30419 @see
30420 @return Result of the function call
30421*/
30422WDI_Status
30423WDI_ProcessStopBatchScanInd
30424(
30425 WDI_ControlBlockType* pWDICtx,
30426 WDI_EventInfoType* pEventData
30427)
30428{
30429 wpt_uint8* pSendBuffer = NULL;
30430 wpt_uint16 usDataOffset = 0;
30431 wpt_uint16 usSendSize = 0;
30432 WDI_Status wdiStatus;
30433 tHalBatchScanStopIndParam *pHalInd = NULL;
30434 WDI_StopBatchScanIndType *pWdiInd = NULL;
30435
30436
30437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30438
30439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30440 "%s", __func__);
30441
30442 /*-------------------------------------------------------------------------
30443 Sanity check
30444 -------------------------------------------------------------------------*/
30445
30446 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30447 {
30448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30449 "%s: Invalid parameters", __func__);
30450 WDI_ASSERT(0);
30451 return WDI_STATUS_E_FAILURE;
30452 }
30453 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30454 /*-----------------------------------------------------------------------
30455 Get message buffer
30456 -----------------------------------------------------------------------*/
30457
30458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30459 WDI_STOP_BATCH_SCAN_IND,
30460 sizeof(tHalBatchScanStopIndParam),
30461 &pSendBuffer, &usDataOffset, &usSendSize))||
30462 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30463 {
30464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30465 "Unable to get send buffer in stop batch scan ind %p ",
30466 pEventData);
30467 WDI_ASSERT(0);
30468 return WDI_STATUS_E_FAILURE;
30469 }
30470
30471 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30472 pHalInd->param = pWdiInd->param;
30473
30474 pWDICtx->pReqStatusUserData = NULL;
30475 pWDICtx->pfncRspCB = NULL;
30476 /*-------------------------------------------------------------------------
30477 Send Stop batch scan indication to HAL
30478 -------------------------------------------------------------------------*/
30479 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30480 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30481}
30482
30483/**
30484 @brief This API is called to trigger batch scan results from FW
30485
30486 @param pWDICtx: pointer to the WLAN DAL context
30487 pEventData: pointer to the event information structure
30488
30489 @see
30490 @return Result of the function call
30491*/
30492WDI_Status
30493WDI_ProcessTriggerBatchScanResultInd
30494(
30495 WDI_ControlBlockType* pWDICtx,
30496 WDI_EventInfoType* pEventData
30497)
30498{
30499 WDI_Status wdiStatus;
30500 wpt_uint8* pSendBuffer = NULL;
30501 wpt_uint16 usDataOffset = 0;
30502 wpt_uint16 usSendSize = 0;
30503 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30504 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30505
30506
30507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30508
30509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30510 "%s", __func__);
30511
30512 /*-------------------------------------------------------------------------
30513 Sanity check
30514 -------------------------------------------------------------------------*/
30515
30516 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30517 {
30518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30519 "%s: Invalid parameters", __func__);
30520 WDI_ASSERT(0);
30521 return WDI_STATUS_E_FAILURE;
30522 }
30523 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30524 /*-----------------------------------------------------------------------
30525 Get message buffer
30526 -----------------------------------------------------------------------*/
30527
30528 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30529 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30530 sizeof(tHalBatchScanTriggerResultParam),
30531 &pSendBuffer, &usDataOffset, &usSendSize))||
30532 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30533 {
30534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30535 "Unable to get send buffer in stop batch scan ind %p ",
30536 pEventData);
30537 WDI_ASSERT(0);
30538 return WDI_STATUS_E_FAILURE;
30539 }
30540
30541 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30542 pHalInd->param = pWdiInd->param;
30543
30544 pWDICtx->pReqStatusUserData = NULL;
30545 pWDICtx->pfncRspCB = NULL;
30546 /*-------------------------------------------------------------------------
30547 Send trigger batch scan result indication to HAL
30548 -------------------------------------------------------------------------*/
30549 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30550 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30551}
30552
30553
30554/**
30555 @brief Process set batch scan response from FW
30556
30557 @param pWDICtx: pointer to the WLAN DAL context
30558 pEventData: pointer to the event information structure
30559
30560 @see
30561 @return Result of the function call
30562*/
30563WDI_Status
30564WDI_ProcessSetBatchScanRsp
30565(
30566 WDI_ControlBlockType* pWDICtx,
30567 WDI_EventInfoType* pEventData
30568)
30569{
30570 WDI_SetBatchScanCb wdiSetBatchScanCb;
30571 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30572
30573 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30575
30576 /*sanity check*/
30577 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30578 ( NULL == pEventData->pEventData))
30579 {
30580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30581 "%s: Invalid parameters", __func__);
30582 WDI_ASSERT(0);
30583 return WDI_STATUS_E_FAILURE;
30584 }
30585
30586 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30587 if ( NULL == wdiSetBatchScanCb)
30588 {
30589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30590 "%s: call back function is NULL", __func__);
30591 WDI_ASSERT(0);
30592 return WDI_STATUS_E_FAILURE;
30593 }
30594
30595 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30596
30597 if (NULL == pSetBatchScanRsp)
30598 {
30599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030600 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030601 pWDICtx, pEventData, pEventData->pEventData);
30602 WDI_ASSERT(0);
30603 return WDI_STATUS_E_FAILURE;
30604 }
30605
Sunil Duttbd736ed2014-05-26 21:19:41 +053030606 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030607 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30608
30609 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30610
Sunil Duttbd736ed2014-05-26 21:19:41 +053030611 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030612 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30613
30614 wpalMemoryFree(pSetBatchScanRsp);
30615
30616 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030617}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030618
30619/**
30620 @brief Process batch scan result indication from FW
30621
30622 @param pWDICtx: pointer to the WLAN DAL context
30623 pEventData: pointer to the event information structure
30624
30625 @see
30626 @return Result of the function call
30627*/
30628WDI_Status
30629WDI_ProcessBatchScanResultInd
30630(
30631 WDI_ControlBlockType* pWDICtx,
30632 WDI_EventInfoType* pEventData
30633)
30634{
30635 void *pBatchScanResultInd;
30636 WDI_LowLevelIndType wdiInd;
30637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30638
Sunil Duttbd736ed2014-05-26 21:19:41 +053030639 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30641 ( NULL == pEventData->pEventData))
30642 {
30643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30644 "%s: Invalid parameters", __func__);
30645 WDI_ASSERT(0);
30646 return WDI_STATUS_E_FAILURE;
30647 }
30648
Sunil Duttbd736ed2014-05-26 21:19:41 +053030649 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030650 pBatchScanResultInd = (void *)pEventData->pEventData;
30651
Sunil Duttbd736ed2014-05-26 21:19:41 +053030652 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030653 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30654
30655 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30656
Sunil Duttbd736ed2014-05-26 21:19:41 +053030657 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030658 if (pWDICtx->wdiLowLevelIndCB)
30659 {
30660 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30661 }
30662 else
30663 {
30664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30665 "%s: WDILowLevelIndCb is null", __func__);
30666 WDI_ASSERT(0);
30667 return WDI_STATUS_E_FAILURE;
30668 }
30669
30670 return WDI_STATUS_SUCCESS;
30671} /*End of WDI_ProcessBatchScanResultInd*/
30672
Sunil Duttbd736ed2014-05-26 21:19:41 +053030673#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30674/**
30675 @brief Process Link Layer Statistics Result indication from FW
30676
30677 @param pWDICtx: pointer to the WLAN DAL context
30678 pEventData: pointer to the event information structure
30679
30680 @see
30681 @return Result of the function call
30682*/
30683WDI_Status
30684WDI_ProcessLinkLayerStatsResultsInd
30685(
30686 WDI_ControlBlockType* pWDICtx,
30687 WDI_EventInfoType* pEventData
30688)
30689{
30690 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030691 WDI_LLstatsResultsType *halLLStatsResults;
30692 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030693 WDI_LowLevelIndType wdiInd;
30694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30695
30696 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30697 "%s: Event RESULTS Indication", __func__);
30698
30699 /* sanity check */
30700 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30701 ( NULL == pEventData->pEventData))
30702 {
30703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30704 "%s: Invalid parameters", __func__);
30705 WDI_ASSERT(0);
30706 return WDI_STATUS_E_FAILURE;
30707 }
30708
30709 /* extract response and send it to UMAC */
30710 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30711
30712 /* Fill in the indication parameters */
30713 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30714
Dino Mycled3d50022014-07-07 12:58:25 +053030715 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30716 = pLinkLayerStatsInd;
30717
30718 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30719
30720
30721 /* Need to fill in the MAC address */
30722 if ( WDI_STATUS_SUCCESS !=
30723 WDI_STATableGetStaMacAddr(pWDICtx,
30724 halLLStatsResults->iface_id,
30725 &macAddr))
30726 {
30727 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30728 " ifaceId: %u does not exist in the WDI Station Table",
30729 halLLStatsResults->iface_id);
30730
30731 return WDI_STATUS_E_FAILURE;
30732 }
30733 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30734 macAddr, WDI_MAC_ADDR_LEN);
30735
30736 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30737 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30738 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030739
30740 /* Notify UMAC */
30741 if (pWDICtx->wdiLowLevelIndCB)
30742 {
30743 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30744 }
30745 else
30746 {
30747 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30748 "%s: WDILowLevelIndCb is null", __func__);
30749 WDI_ASSERT(0);
30750 return WDI_STATUS_E_FAILURE;
30751 }
30752
30753 return WDI_STATUS_SUCCESS;
30754} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30755#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30756
Rajeev79dbe4c2013-10-05 11:03:42 +053030757/**
30758 @brief WDI_ProcessSetBatchScanReq -
30759 Set batch scan request to FW
30760
30761 @param pWDICtx : wdi context
30762 pEventData : indication data
30763
30764 @see
30765 @return none
30766*/
30767WDI_Status WDI_ProcessSetBatchScanReq
30768(
30769 WDI_ControlBlockType* pWDICtx,
30770 WDI_EventInfoType* pEventData
30771)
30772{
30773 WDI_SetBatchScanReqType *pWdiReq;
30774 WDI_Status wdiStatus;
30775 wpt_uint8* pSendBuffer = NULL;
30776 wpt_uint16 usDataOffset = 0;
30777 wpt_uint16 usSendSize = 0;
30778 tHalBatchScanSetParams *pHalReq;
30779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30780
30781 /*sanity check*/
30782 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30783 {
30784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30785 "%s: Invalid parameters in set batch scan request", __func__);
30786 WDI_ASSERT(0);
30787 return WDI_STATUS_E_FAILURE;
30788 }
30789
30790
30791 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30792
30793
30794 /*get message buffer*/
30795 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30796 WDI_SET_BATCH_SCAN_REQ,
30797 sizeof(tHalBatchScanSetParams),
30798 &pSendBuffer, &usDataOffset, &usSendSize))||
30799 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30800 {
30801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30802 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30803 WDI_ASSERT(0);
30804 return WDI_STATUS_E_FAILURE;
30805 }
30806
30807 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30808
30809 pHalReq->rtt = pWdiReq->rtt;
30810 pHalReq->rfBand = pWdiReq->rfBand;
30811 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30812 pHalReq->scanInterval = pWdiReq->scanFrequency;
30813 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30814
30815 /*send set batch scan request to fw*/
30816 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30817 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30818
30819 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30820 usSendSize, pWDICtx->pfncRspCB,
30821 pWDICtx->pReqStatusUserData,
30822 WDI_SET_BATCH_SCAN_RESP);
30823
30824 return wdiStatus;
30825}
30826
30827/**
30828 @brief WDI_SetBatchScanReq
30829 This API is called to set batch scan request in FW
30830
30831 @param pBatchScanReqParam : pointer to set batch scan re param
30832 usrData : Client context
30833 setBatchScanRspCb : set batch scan resp callback
30834 @see
30835 @return SUCCESS or FAIL
30836*/
30837WDI_Status WDI_SetBatchScanReq
30838(
30839 void *pBatchScanReqParam,
30840 void *usrData,
30841 WDI_SetBatchScanCb setBatchScanRspCb
30842)
30843{
30844 WDI_EventInfoType wdiEventData;
30845
30846 /*sanity check*/
30847 if (eWLAN_PAL_FALSE == gWDIInitialized)
30848 {
30849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30850 "WDI API call before module is initialized - Fail request");
30851
30852 return WDI_STATUS_E_NOT_ALLOWED;
30853 }
30854
30855 /* fill in event data and post to the main FSM */
30856 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30857 wdiEventData.pEventData = pBatchScanReqParam;
30858 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30859 wdiEventData.pCBfnc = setBatchScanRspCb;
30860 wdiEventData.pUserData = usrData;
30861
30862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30863}
30864
30865/**
30866 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30867
30868 @param None
30869
30870 @see
30871
30872 @return Status of the request
30873*/
30874WDI_Status
30875WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30876{
30877 WDI_EventInfoType wdiEventData;
30878
30879 /*-------------------------------------------------------------------------
30880 Sanity Check
30881 ------------------------------------------------------------------------*/
30882 if (eWLAN_PAL_FALSE == gWDIInitialized)
30883 {
30884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30885 "WDI API call before module is initialized - Fail request!");
30886
30887 return WDI_STATUS_E_NOT_ALLOWED;
30888 }
30889
30890 /*-------------------------------------------------------------------------
30891 Fill in Event data and post to the Main FSM
30892 ------------------------------------------------------------------------*/
30893 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30894 wdiEventData.pEventData = pWdiReq;
30895 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30896 wdiEventData.pCBfnc = NULL;
30897 wdiEventData.pUserData = NULL;
30898
30899 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30900}
30901
30902/**
30903 @brief WDI_TriggerBatchScanResultInd
30904 This API is called to pull batch scan result from FW
30905
30906 @param pWdiReq : pointer to get batch scan ind param
30907 @see
30908 @return SUCCESS or FAIL
30909*/
30910WDI_Status WDI_TriggerBatchScanResultInd
30911(
30912 WDI_TriggerBatchScanResultIndType *pWdiReq
30913)
30914{
30915 WDI_EventInfoType wdiEventData;
30916 /*-------------------------------------------------------------------------
30917 Sanity Check
30918 ------------------------------------------------------------------------*/
30919 if (eWLAN_PAL_FALSE == gWDIInitialized)
30920 {
30921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30922 "WDI API call before module is initialized - Fail request!");
30923
30924 return WDI_STATUS_E_NOT_ALLOWED;
30925 }
30926
30927 /*-------------------------------------------------------------------------
30928 Fill in Event data and post to the Main FSM
30929 ------------------------------------------------------------------------*/
30930 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30931 wdiEventData.pEventData = pWdiReq;
30932 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30933 wdiEventData.pCBfnc = NULL;
30934 wdiEventData.pUserData = NULL;
30935
30936 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30937}
Rajeev79dbe4c2013-10-05 11:03:42 +053030938#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030939
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030940/**
30941 @brief Process Update Channel Rsp function (called when a response is
30942 being received over the bus from HAL)
30943
30944 @param pWDICtx: pointer to the WLAN DAL context
30945 pEventData: pointer to the event information structure
30946
30947 @see
30948 @return Result of the function call
30949*/
30950WDI_Status
30951WDI_ProcessUpdateChanRsp
30952(
30953 WDI_ControlBlockType* pWDICtx,
30954 WDI_EventInfoType* pEventData
30955)
30956{
30957 WDI_Status wdiStatus;
30958 eHalStatus halStatus;
30959 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30961
30962 /*-------------------------------------------------------------------------
30963 Sanity check
30964 -------------------------------------------------------------------------*/
30965 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30966 ( NULL == pEventData->pEventData))
30967 {
30968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30969 "%s: Invalid parameters", __func__);
30970 WDI_ASSERT(0);
30971 return WDI_STATUS_E_FAILURE;
30972 }
30973
30974 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30975
30976 /*-------------------------------------------------------------------------
30977 Extract response and send it to UMAC
30978 -------------------------------------------------------------------------*/
30979 halStatus = *((eHalStatus*)pEventData->pEventData);
30980 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30981
30982 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30983
30984 return WDI_STATUS_SUCCESS;
30985}/*WDI_ProcessUpdateChanRsp*/
30986
Leo Chang0b0e45a2013-12-15 15:18:55 -080030987#ifdef FEATURE_WLAN_CH_AVOID
30988/**
30989 @brief v -WDI_ProcessChAvoidInd
30990
30991
30992 @param pWDICtx : wdi context
30993 pEventData : indication data
30994 @see
30995 @return Result of the function call
30996*/
30997WDI_Status
30998WDI_ProcessChAvoidInd
30999(
31000 WDI_ControlBlockType* pWDICtx,
31001 WDI_EventInfoType* pEventData
31002)
31003{
31004 WDI_LowLevelIndType wdiInd;
31005 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31006 wpt_uint16 rangeLoop;
31007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31008
31009 /*-------------------------------------------------------------------------
31010 Sanity check
31011 -------------------------------------------------------------------------*/
31012 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31013 (NULL == pEventData->pEventData))
31014 {
31015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31016 "%s: Invalid parameters", __func__);
31017 WDI_ASSERT(0);
31018 return WDI_STATUS_E_FAILURE;
31019 }
31020
31021 /*-------------------------------------------------------------------------
31022 Extract indication and send it to UMAC
31023 -------------------------------------------------------------------------*/
31024 wpalMemoryCopy(&chAvoidIndicationParam,
31025 pEventData->pEventData,
31026 sizeof(tHalAvoidFreqRangeIndParams));
31027
Abhishek Singhe34eb552015-06-18 10:12:15 +053031028 /* Avoid Over flow */
31029 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31030 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31031
Leo Chang0b0e45a2013-12-15 15:18:55 -080031032 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31033 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31034 chAvoidIndicationParam.avoidCnt;
31035 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31036 (void *)chAvoidIndicationParam.avoidRange,
31037 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31038 sizeof(WDI_ChAvoidFreqType));
31039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31040 "%s: band count %d", __func__,
31041 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31042 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31043 {
31044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31045 "%s: srart freq %d, end freq %d", __func__,
31046 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31047 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31048 }
31049
31050 /*Notify UMAC*/
31051 if (pWDICtx->wdiLowLevelIndCB)
31052 {
31053 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31054 }
31055
31056 return WDI_STATUS_SUCCESS;
31057}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031058
Leo Chang0b0e45a2013-12-15 15:18:55 -080031059#endif /* FEATURE_WLAN_CH_AVOID */
31060
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031061/**
31062 @brief Process OBSS Start scan result indication
31063
31064 @param pWDICtx: pointer to the WLAN DAL context
31065 pEventData: pointer to the event information structure
31066
31067 @see
31068 @return Result of the function call
31069*/
31070WDI_Status
31071WDI_ProcessHT40OBSSScanInd
31072(
31073 WDI_ControlBlockType* pWDICtx,
31074 WDI_EventInfoType* pEventData
31075)
31076{
31077 wpt_uint8* pSendBuffer = NULL;
31078 wpt_uint16 usDataOffset = 0;
31079 wpt_uint16 usSendSize = 0;
31080 wpt_uint16 usLen = 0;
31081 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31082 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31083 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31084 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31085
31086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31087
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031089 "%s", __func__);
31090
31091 /*-------------------------------------------------------------------------
31092 Sanity check
31093 -------------------------------------------------------------------------*/
31094 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31095 {
31096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31097 "%s: Invalid parameters", __func__);
31098 WDI_ASSERT(0);
31099 return WDI_STATUS_E_FAILURE;
31100 }
31101 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31102
31103 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31104 /*-----------------------------------------------------------------------
31105 Get message buffer
31106 -----------------------------------------------------------------------*/
31107
31108 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31109 WDI_START_HT40_OBSS_SCAN_IND,
31110 sizeof(tHT40ObssScanIndType),
31111 &pSendBuffer, &usDataOffset, &usSendSize))||
31112 ( usSendSize < (usDataOffset + usLen )))
31113 {
31114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31115 "Unable to get send buffer in HT40 OBSS Start req %p ",
31116 pEventData);
31117 WDI_ASSERT(0);
31118 return WDI_STATUS_E_FAILURE;
31119 }
31120 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31121 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31122 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31123 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31124 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31125 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31126 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31127 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31128 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31129 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31130 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31131 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31132 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31133 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31134 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31135 pHT40ObssScanInd->OBSSScanActivityThreshold =
31136 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31137 pHT40ObssScanInd->selfStaIdx =
31138 pwdiHT40OBSSScanInd->selfStaIdx;
31139 pHT40ObssScanInd->bssIdx =
31140 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031141 pHT40ObssScanInd->currentOperatingClass =
31142 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031143 pHT40ObssScanInd->fortyMHZIntolerent =
31144 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31145 pHT40ObssScanInd->channelCount =
31146 pwdiHT40OBSSScanInd->channelCount;
31147
31148 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31149 WDI_ROAM_SCAN_MAX_CHANNELS);
31150 pHT40ObssScanInd->ieFieldLen =
31151 pwdiHT40OBSSScanInd->ieFieldLen;
31152
31153 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31154 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31155 pWDICtx->pReqStatusUserData = NULL;
31156 pWDICtx->pfncRspCB = NULL;
31157
31158 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31159 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31160
31161 /*-------------------------------------------------------------------------
31162 Send OBSS Start Indication to HAL
31163 -------------------------------------------------------------------------*/
31164 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31165 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31166
31167} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31168
31169
31170/**
31171 @brief wdi_HT40OBSSScanInd
31172 This API is called to start OBSS scan
31173
31174 @param pWdiReq : pointer to get ind param
31175 @see
31176 @return SUCCESS or FAIL
31177*/
31178WDI_Status WDI_HT40OBSSScanInd
31179(
31180 WDI_HT40ObssScanParamsType *pWdiReq
31181)
31182{
31183 WDI_EventInfoType wdiEventData;
31184
31185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31186 "%s", __func__);
31187 /*-------------------------------------------------------------------------
31188 Sanity Check
31189 ------------------------------------------------------------------------*/
31190 if (eWLAN_PAL_FALSE == gWDIInitialized)
31191 {
31192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31193 "WDI API call before module is initialized - Fail request!");
31194
31195 return WDI_STATUS_E_NOT_ALLOWED;
31196 }
31197
31198 /*-------------------------------------------------------------------------
31199 Fill in Event data and post to the Main FSM
31200 ------------------------------------------------------------------------*/
31201 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31202 wdiEventData.pEventData = pWdiReq;
31203 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31204 wdiEventData.pCBfnc = NULL;
31205 wdiEventData.pUserData = NULL;
31206
31207
31208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31209}
31210
31211/**
31212 @brief Process OBSS Stop scan result
31213
31214 @param pWDICtx: pointer to the WLAN DAL context
31215 pEventData: pointer to the event information structure
31216
31217 @see
31218 @return Result of the function call
31219*/
31220WDI_Status
31221WDI_ProcessHT40OBSSStopScanInd
31222(
31223 WDI_ControlBlockType* pWDICtx,
31224 WDI_EventInfoType* pEventData
31225)
31226{
31227 wpt_uint8* pSendBuffer = NULL;
31228 wpt_uint16 usDataOffset = 0;
31229 wpt_uint16 usSendSize = 0;
31230 wpt_uint16 usLen = 0;
31231 wpt_uint8 *wdiBssIdx = 0;
31232 tANI_U8 *bssIdx = 0;
31233 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31234
31235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31236
31237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31238 "%s", __func__);
31239
31240 /*-------------------------------------------------------------------------
31241 Sanity check
31242 -------------------------------------------------------------------------*/
31243 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31244 {
31245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31246 "%s: Invalid parameters", __func__);
31247 WDI_ASSERT(0);
31248 return WDI_STATUS_E_FAILURE;
31249 }
31250 bssIdx = (wpt_uint8*)pEventData->pEventData;
31251 /*-----------------------------------------------------------------------
31252 Get message buffer
31253 -----------------------------------------------------------------------*/
31254
31255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31256 WDI_STOP_HT40_OBSS_SCAN_IND,
31257 sizeof(tANI_U8),
31258 &pSendBuffer, &usDataOffset, &usSendSize))||
31259 ( usSendSize < (usDataOffset + usLen )))
31260 {
31261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31262 "Unable to get send buffer in HT40 OBSS Start req %p ",
31263 pEventData);
31264 WDI_ASSERT(0);
31265 return WDI_STATUS_E_FAILURE;
31266 }
31267
31268 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31269 bssIdx = wdiBssIdx;
31270
31271 pWDICtx->pReqStatusUserData = NULL;
31272 pWDICtx->pfncRspCB = NULL;
31273
31274 /*-------------------------------------------------------------------------
31275 Send DHCP Start Indication to HAL
31276 -------------------------------------------------------------------------*/
31277 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31278 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31279} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31280
31281/**
31282 @brief WDI_HT40OBSSStopScanInd
31283 This API is called to start OBSS scan
31284 @param pWdiReq : pointer to get ind param
31285 @see
31286 @return SUCCESS or FAIL
31287*/
31288WDI_Status WDI_HT40OBSSStopScanInd
31289(
31290 wpt_uint8 bssIdx
31291)
31292{
31293 WDI_EventInfoType wdiEventData;
31294
31295 /*-------------------------------------------------------------------------
31296 Sanity Check
31297 ------------------------------------------------------------------------*/
31298 if (eWLAN_PAL_FALSE == gWDIInitialized)
31299 {
31300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31301 "WDI API call before module is initialized - Fail request!");
31302
31303 return WDI_STATUS_E_NOT_ALLOWED;
31304 }
31305
31306 /*-------------------------------------------------------------------------
31307 Fill in Event data and post to the Main FSM
31308 ------------------------------------------------------------------------*/
31309 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31310 wdiEventData.pEventData = &bssIdx;
31311 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31312 wdiEventData.pCBfnc = NULL;
31313 wdiEventData.pUserData = NULL;
31314
31315 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31316}
31317
c_hpothu86041002014-04-14 19:06:51 +053031318WDI_Status
31319WDI_printRegInfo
31320(
31321 WDI_ControlBlockType* pWDICtx,
31322 WDI_EventInfoType* pEventData
31323)
31324{
31325 tHalRegDebugInfo *pRegTable;
31326 tHalRegDebugInfoParams *pRegParams;
31327 uint32 cnt=0;
31328
31329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31330 "%s: ", __func__);
31331 /*-------------------------------------------------------------------------
31332 Sanity check
31333 -------------------------------------------------------------------------*/
31334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31335 ( NULL == pEventData->pEventData))
31336 {
31337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31338 "%s: Invalid parameters", __func__);
31339 WDI_ASSERT(0);
31340 return WDI_STATUS_E_FAILURE;
31341 }
31342
31343 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31344
31345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31346 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31347 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31348
31349 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31350
31351 if (pRegParams->regCount <= 0)
31352 {
31353 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31354 "%s incorrect parameters passed", __func__);
31355 return WDI_STATUS_E_FAILURE;
31356 }
31357
31358 while(pRegParams->regCount--)
31359 {
31360 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31361 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31362 cnt++;
31363 }
31364
31365 return WDI_STATUS_SUCCESS;
31366}
c_hpothu92367912014-05-01 15:18:17 +053031367
31368/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031369 * FUNCTION: WDI_delBaInd
31370 * send the delBA to peer.
31371 */
31372
31373WDI_Status
31374WDI_delBaInd
31375(
31376 WDI_ControlBlockType* pWDICtx,
31377 WDI_EventInfoType* pEventData
31378
31379)
31380{
31381 tHalWlanDelBaIndMsg halDelBaInd;
31382 WDI_LowLevelIndType wdiInd;
31383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31384
31385 /*-------------------------------------------------------------------------
31386 Sanity check
31387 -------------------------------------------------------------------------*/
31388 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31389 ( NULL == pEventData->pEventData))
31390 {
31391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31392 "%s: Invalid parameters", __func__);
31393 WDI_ASSERT(0);
31394 return WDI_STATUS_E_FAILURE;
31395 }
31396
31397 /*-------------------------------------------------------------------------
31398 Extract indication and send it to UMAC
31399 -------------------------------------------------------------------------*/
31400
31401 /* Parameters need to be unpacked according to HAL struct*/
31402 wpalMemoryCopy( &halDelBaInd,
31403 pEventData->pEventData,
31404 sizeof(halDelBaInd));
31405
31406 /*Fill in the indication parameters*/
31407 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31408
31409 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31410 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31411 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31412
31413 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31414 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31415 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31416
31417 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31418 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31419 if ( pWDICtx->wdiLowLevelIndCB )
31420 {
31421 /*Notify UMAC*/
31422 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31423 }
31424
31425 return WDI_STATUS_SUCCESS;
31426
31427
31428}
31429
31430/*
c_hpothu92367912014-05-01 15:18:17 +053031431 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31432 * send the response to PE with beacon miss count
31433 * received from WDI.
31434 */
31435WDI_Status
31436WDI_ProcessGetBcnMissRateRsp
31437(
31438 WDI_ControlBlockType* pWDICtx,
31439 WDI_EventInfoType* pEventData
31440)
31441{
31442 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31443 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31444
31445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31446 "In %s",__func__);
31447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31448
31449 /*-------------------------------------------------------------------------
31450 Sanity check
31451 -------------------------------------------------------------------------*/
31452 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31453 ( NULL == pEventData->pEventData))
31454 {
31455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31456 "%s: Invalid parameters", __func__);
31457 WDI_ASSERT(0);
31458 return WDI_STATUS_E_FAILURE;
31459 }
31460
31461 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31462 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31463
31464 /*Notify UMAC*/
31465 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31466 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31467 return WDI_STATUS_SUCCESS;
31468}
31469
31470/*
31471 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31472 * Request to WDI to get missed beacon rate.
31473 */
31474WDI_Status
31475WDI_ProcessGetBcnMissRateReq
31476(
31477 WDI_ControlBlockType* pWDICtx,
31478 WDI_EventInfoType* pEventData
31479)
31480{
31481 wpt_uint8* pSendBuffer = NULL;
31482 wpt_uint16 usDataOffset = 0;
31483 wpt_uint16 usSendSize = 0;
31484 wpt_uint8 ucCurrentBSSSesIdx = 0;
31485 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031486 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31487 tHalBcnMissRateReqParams halBcnMissRateReq;
31488
31489/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31490
31491 /*-------------------------------------------------------------------------
31492 Sanity check
31493 -------------------------------------------------------------------------*/
31494 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31495 ( NULL == pEventData->pCBfnc ) )
31496 {
31497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31498 "%s: Invalid parameters", __func__);
31499 WDI_ASSERT(0);
31500 return WDI_STATUS_E_FAILURE;
31501 }
31502
31503 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31504
31505 wpalMutexAcquire(&pWDICtx->wptMutex);
31506
31507 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31508 pEventData->pEventData, &pBSSSes);
31509 if ( NULL == pBSSSes )
31510 {
31511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31512 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031513 MAC_ADDRESS_STR, __func__,
31514 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031515 wpalMutexRelease(&pWDICtx->wptMutex);
31516 return WDI_STATUS_E_NOT_ALLOWED;
31517 }
31518 wpalMutexRelease(&pWDICtx->wptMutex);
31519
31520 /*-----------------------------------------------------------------------
31521 Get message buffer
31522 -----------------------------------------------------------------------*/
31523 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31524 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31525 sizeof(tHalBcnMissRateReqParams),
31526 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31527 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31528 {
31529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31530 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31531 pEventData);
31532 WDI_ASSERT(0);
31533 return WDI_STATUS_E_FAILURE;
31534 }
31535
31536 pWDICtx->wdiReqStatusCB = NULL;
31537 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31538
31539 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31540
31541 wpalMemoryCopy( pSendBuffer+usDataOffset,
31542 &halBcnMissRateReq,
31543 sizeof(tHalBcnMissRateReqParams));
31544 /*-------------------------------------------------------------------------
31545 Send Get STA Request to HAL
31546 -------------------------------------------------------------------------*/
31547 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31548 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31549}
31550
31551/**
31552 @brief WDI_GetBcnMissRate
31553
31554 @param pUserData: user data will be passed back with the
31555 callback
31556 WDI_GetBcnMissRateCb: callback for passing back the response
31557 of the get stats operation received from the device
31558 bssid: bssid, to send bssIdx to FW
31559
31560 @return SUCCESS or FAIL
31561*/
31562WDI_Status WDI_GetBcnMissRate( void *pUserData,
31563 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31564 tANI_U8 *bssid )
31565{
31566 WDI_EventInfoType wdiEventData;
31567
31568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31569
31570 /*------------------------------------------------------------------------
31571 Sanity Check
31572 ------------------------------------------------------------------------*/
31573 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31574 {
31575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31576 "WDI API call before module is initialized - Fail request");
31577
31578 return WDI_STATUS_E_NOT_ALLOWED;
31579 }
31580
31581 /*------------------------------------------------------------------------
31582 Fill in Event data and post to the Main FSM
31583 ------------------------------------------------------------------------*/
31584 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31585 wdiEventData.pEventData = bssid;
31586 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31587 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31588 wdiEventData.pUserData = pUserData;
31589
31590 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31591}
Abhishek Singh85b74712014-10-08 11:38:19 +053031592
31593/*
31594 * FUNCTION: WDI_ProcessGetFwStatsRsp
31595 * send the response with FW stats asked.
31596 */
31597WDI_Status
31598 WDI_ProcessGetFwStatsRsp
31599(
31600 WDI_ControlBlockType* pWDICtx,
31601 WDI_EventInfoType* pEventData
31602)
31603{
31604 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31605 tpHalfwStatsRspParams pHalFwstatsRsp;
31606 WDI_FWStatsResults fwStats;
31607
31608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31609
31610 /*-------------------------------------------------------------------------
31611 Sanity check
31612 -------------------------------------------------------------------------*/
31613 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31614 ( NULL == pEventData->pEventData))
31615 {
31616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31617 "%s: Invalid parameters", __func__);
31618 WDI_ASSERT(0);
31619 return WDI_STATUS_E_FAILURE;
31620 }
31621 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31622 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31623
31624 if(pHalFwstatsRsp->length)
31625 {
31626 switch( pHalFwstatsRsp->type )
31627 {
31628 case FW_UBSP_STATS:
31629 {
31630 ubspFwStats *ubspStatsfromFw;
31631
31632 fwStats.type = pHalFwstatsRsp->type;
31633 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31634 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31635 ubspStatsfromFw->ubsp_enter_cnt;
31636 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31637 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31638 }
31639 break;
31640 default:
31641 {
31642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31643 "%s: No handling for stats type %d", __func__,
31644 pHalFwstatsRsp->type);
31645 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31646 NULL, pWDICtx->pRspCBUserData);
31647 return WDI_STATUS_E_FAILURE;
31648 }
31649 }
31650 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31651 }
31652 else
31653 {
31654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31655 "%s: Length = 0 for type %d return failure ", __func__,
31656 pHalFwstatsRsp->type);
31657 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31658 NULL, pWDICtx->pRspCBUserData);
31659 return WDI_STATUS_E_FAILURE;
31660 }
31661 return WDI_STATUS_SUCCESS;
31662}
31663
31664/*
31665 * FUNCTION: WDI_ProcessGetFwStatsReq
31666 * Request to WDI to get FW Stats.
31667 */
31668WDI_Status
31669 WDI_ProcessGetFwStatsReq
31670(
31671 WDI_ControlBlockType* pWDICtx,
31672 WDI_EventInfoType* pEventData
31673)
31674{
31675 wpt_uint8* pSendBuffer = NULL;
31676 wpt_uint16 usDataOffset = 0;
31677 wpt_uint16 usSendSize = 0;
31678 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31679 tHalfwStatsReqParams halFwStatsReq;
31680
31681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31682
31683 /*-------------------------------------------------------------------------
31684 Sanity check
31685 -------------------------------------------------------------------------*/
31686 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31687 ( NULL == pEventData->pCBfnc ) )
31688 {
31689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31690 "%s: Invalid parameters", __func__);
31691 WDI_ASSERT(0);
31692 return WDI_STATUS_E_FAILURE;
31693 }
31694
31695 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31696
31697 /*-----------------------------------------------------------------------
31698 Get message buffer
31699 -----------------------------------------------------------------------*/
31700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31701 pWDICtx, WDI_GET_FW_STATS_REQ,
31702 sizeof(tHalfwStatsReqParams),
31703 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31704 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31705 {
31706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31707 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31708 pEventData);
31709 WDI_ASSERT(0);
31710 return WDI_STATUS_E_FAILURE;
31711 }
31712
31713 pWDICtx->wdiReqStatusCB = NULL;
31714 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31715 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31716 wpalMemoryCopy( pSendBuffer+usDataOffset,
31717 &halFwStatsReq,
31718 sizeof(tHalfwStatsReqParams));
31719 /*-------------------------------------------------------------------------
31720 Send Get STA Request to HAL
31721 -------------------------------------------------------------------------*/
31722 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31723 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31724}
31725
Sunil Duttbd736ed2014-05-26 21:19:41 +053031726#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31727
31728/**
31729 @brief WDI_LLStatsSetReq
31730 This API is called to set link layer stats request in FW
31731
31732 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31733 wdiLLStatsSetRspCb : set link layer stats resp callback
31734 usrData : Client context
31735 @see
31736 @return SUCCESS or FAIL
31737*/
31738WDI_Status
31739WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31740 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31741 void* pUserData)
31742{
31743 WDI_EventInfoType wdiEventData;
31744
31745 /*------------------------------------------------------------------------
31746 Sanity Check
31747 ------------------------------------------------------------------------*/
31748 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31749 {
31750 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31751 "WDI API call before module is initialized - Fail request");
31752
31753 return WDI_STATUS_E_NOT_ALLOWED;
31754 }
31755
31756 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31757 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31758 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31759 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31760 wdiEventData.pUserData = pUserData;
31761
31762 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31763}
31764
31765/**
31766 @brief WDI_ProcessLLStatsSetReq -
31767 Set Link Layer Stats request to FW
31768
31769 @param pWDICtx : wdi context
31770 pEventData : indication data
31771
31772 @see
31773 @return none
31774*/
31775WDI_Status
31776WDI_ProcessLLStatsSetReq
31777(
31778 WDI_ControlBlockType* pWDICtx,
31779 WDI_EventInfoType* pEventData
31780)
31781{
31782 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31783 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31784 wpt_uint8* pSendBuffer = NULL;
31785 wpt_uint16 usSendSize = 0;
31786 wpt_uint16 usDataOffset = 0;
31787 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31788
31789 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31790 ( NULL == pEventData->pCBfnc ))
31791 {
31792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31793 "%s: Invalid parameters", __func__);
31794 WDI_ASSERT(0);
31795 return WDI_STATUS_E_FAILURE;
31796 }
31797
31798 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31799 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31800
31801 /*-----------------------------------------------------------------------
31802 Get message buffer
31803 ! TO DO : proper conversion into the HAL Message Request Format
31804 -----------------------------------------------------------------------*/
31805 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31806 pWDICtx,
31807 WDI_LL_STATS_SET_REQ,
31808 sizeof(tHalMacLlSetStatsReqParams),
31809 &pSendBuffer, &usDataOffset,
31810 &usSendSize))||
31811 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31812 {
31813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31814 "Unable to get send buffer in %s %p %p %p", __func__,
31815 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31816 WDI_ASSERT(0);
31817 return WDI_STATUS_E_FAILURE;
31818 }
31819
31820
Dino Mycled3d50022014-07-07 12:58:25 +053031821 /* Need to fill in the self STA Index */
31822 if ( WDI_STATUS_SUCCESS !=
31823 WDI_STATableFindStaidByAddr(pWDICtx,
31824 pwdiLLStatsSetReqParams->macAddr,
31825 &halLLStatsSetParams.sta_id))
31826 {
31827 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31828 MAC_ADDRESS_STR
31829 ": This station does not exist in the WDI Station Table",
31830 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31831
31832 wpalMemoryFree(pSendBuffer);
31833 return WDI_STATUS_E_FAILURE;
31834 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031835
31836 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031837 halLLStatsSetParams.mpdu_size_threshold =
31838 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31839 halLLStatsSetParams.aggressive_statistics_gathering =
31840 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31841
31842 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31843 " halLLStatsSetParams.req_id = %u",
31844 halLLStatsSetParams.req_id);
31845 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31846 " halLLStatsSetParams.sta_id = %u",
31847 halLLStatsSetParams.sta_id);
31848 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31849 " halLLStatsSetParams.mpdu_size_threshold = %u",
31850 halLLStatsSetParams.mpdu_size_threshold);
31851 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31852 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31853 halLLStatsSetParams.aggressive_statistics_gathering);
31854
31855 wpalMemoryCopy(pSendBuffer+usDataOffset,
31856 &halLLStatsSetParams,
31857 sizeof(halLLStatsSetParams));
31858
31859 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31860
31861 /*-------------------------------------------------------------------------
31862 Send Clear Link Layer Stats Request to HAL
31863 -------------------------------------------------------------------------*/
31864 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31865 wdiLLStatsSetCb, pEventData->pUserData,
31866 WDI_LL_STATS_SET_RSP);
31867}
31868
31869/**
31870 @brief WDI_LLStatsGetReq
31871 This API is called to get link layer stats request in FW
31872
31873 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31874 wdiLLStatsGetRspCb : get link layer stats resp callback
31875 usrData : Client context
31876 @see
31877 @return SUCCESS or FAIL
31878*/
31879WDI_Status
31880WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31881 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31882 void* pUserData)
31883{
31884 WDI_EventInfoType wdiEventData;
31885
31886 /*------------------------------------------------------------------------
31887 Sanity Check
31888 ------------------------------------------------------------------------*/
31889 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31890 {
31891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31892 "WDI API call before module is initialized - Fail request");
31893
31894 return WDI_STATUS_E_NOT_ALLOWED;
31895 }
31896
31897 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31898 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31899 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31900 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31901 wdiEventData.pUserData = pUserData;
31902
31903 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31904}
31905
31906/**
31907 @brief WDI_ProcessLLStatsGetReq -
31908 Get Link Layer Stats request to FW
31909
31910 @param pWDICtx : wdi context
31911 pEventData : indication data
31912
31913 @see
31914 @return none
31915*/
31916WDI_Status
31917WDI_ProcessLLStatsGetReq
31918(
31919 WDI_ControlBlockType* pWDICtx,
31920 WDI_EventInfoType* pEventData
31921)
31922{
31923 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31924 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31925 wpt_uint8* pSendBuffer = NULL;
31926 wpt_uint16 usSendSize = 0;
31927 wpt_uint16 usDataOffset = 0;
31928 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31929
31930 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31931 ( NULL == pEventData->pCBfnc ))
31932 {
31933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31934 "%s: Invalid parameters", __func__);
31935 WDI_ASSERT(0);
31936 return WDI_STATUS_E_FAILURE;
31937 }
31938
31939 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31940 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31941
31942 /*-----------------------------------------------------------------------
31943 Get message buffer
31944 ! TO DO : proper conversion into the HAL Message Request Format
31945 -----------------------------------------------------------------------*/
31946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31947 pWDICtx,
31948 WDI_LL_STATS_GET_REQ,
31949 sizeof(tHalMacLlGetStatsReqParams),
31950 &pSendBuffer, &usDataOffset,
31951 &usSendSize))||
31952 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31953 {
31954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31955 "Unable to get send buffer in %s %p %p %p", __func__,
31956 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31957 WDI_ASSERT(0);
31958 return WDI_STATUS_E_FAILURE;
31959 }
Dino Mycled3d50022014-07-07 12:58:25 +053031960 /* Need to fill in the self STA Index */
31961 if ( WDI_STATUS_SUCCESS !=
31962 WDI_STATableFindStaidByAddr(pWDICtx,
31963 pwdiLLStatsGetReqParams->macAddr,
31964 &halLLStatsGetParams.sta_id))
31965 {
31966 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31967 MAC_ADDRESS_STR
31968 ": This station does not exist in the WDI Station Table",
31969 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31970
31971 wpalMemoryFree(pSendBuffer);
31972 return WDI_STATUS_E_FAILURE;
31973 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031974
31975 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031976 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31977
31978 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31979 " halLLStatsGetParams.req_id = %u",
31980 halLLStatsGetParams.req_id);
31981 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31982 " halLLStatsGetParams.staId = %u",
31983 halLLStatsGetParams.sta_id);
31984 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31985 " halLLStatsGetParams.Mask = %u",
31986 halLLStatsGetParams.param_id_mask);
31987
31988 wpalMemoryCopy(pSendBuffer+usDataOffset,
31989 &halLLStatsGetParams,
31990 sizeof(halLLStatsGetParams));
31991
31992 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31993
31994 /*-------------------------------------------------------------------------
31995 Send Clear Link Layer Stats Request to HAL
31996 -------------------------------------------------------------------------*/
31997 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31998 wdiLLStatsGetCb, pEventData->pUserData,
31999 WDI_LL_STATS_GET_RSP);
32000}
32001
32002/**
32003 @brief WDI_LLStatsClearReq
32004 This API is called to clear link layer stats request in FW
32005
32006 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32007 wdiLLStatsSetRspCb : clear link layer stats resp callback
32008 usrData : Client context
32009 @see
32010 @return SUCCESS or FAIL
32011*/
32012WDI_Status
32013WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32014 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32015 void* pUserData)
32016{
32017 WDI_EventInfoType wdiEventData;
32018
32019 /*------------------------------------------------------------------------
32020 Sanity Check
32021 ------------------------------------------------------------------------*/
32022 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32023 {
32024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32025 "WDI API call before module is initialized - Fail request");
32026
32027 return WDI_STATUS_E_NOT_ALLOWED;
32028 }
32029
32030 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32031 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32032 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32033 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32034 wdiEventData.pUserData = pUserData;
32035
32036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32037 "%s:%d Enter", __func__, __LINE__);
32038
32039 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32040}
32041
32042/**
32043 @brief WDI_ProcessLLStatsClearReq -
32044 Clear Link Layer Stats request to FW
32045
32046 @param pWDICtx : wdi context
32047 pEventData : indication data
32048
32049 @see
32050 @return none
32051*/
32052WDI_Status
32053WDI_ProcessLLStatsClearReq
32054(
32055 WDI_ControlBlockType* pWDICtx,
32056 WDI_EventInfoType* pEventData
32057)
32058{
32059 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32060 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32061 wpt_uint8* pSendBuffer = NULL;
32062 wpt_uint16 usSendSize = 0;
32063 wpt_uint16 usDataOffset = 0;
32064 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32065
32066 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32067 ( NULL == pEventData->pCBfnc ))
32068 {
32069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32070 "%s: Invalid parameters", __func__);
32071 WDI_ASSERT(0);
32072 return WDI_STATUS_E_FAILURE;
32073 }
32074
32075 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32076 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32077
32078 /*-----------------------------------------------------------------------
32079 Get message buffer
32080 ! TO DO : proper conversion into the HAL Message Request Format
32081 -----------------------------------------------------------------------*/
32082 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32083 pWDICtx,
32084 WDI_LL_STATS_CLEAR_REQ,
32085 sizeof(tHalMacLlClearStatsReqParams),
32086 &pSendBuffer, &usDataOffset,
32087 &usSendSize))||
32088 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32089 {
32090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32091 "Unable to get send buffer in %s %p %p %p", __func__,
32092 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32093 WDI_ASSERT(0);
32094 return WDI_STATUS_E_FAILURE;
32095 }
Dino Mycled3d50022014-07-07 12:58:25 +053032096 /* Need to fill in the self STA Index */
32097 if ( WDI_STATUS_SUCCESS !=
32098 WDI_STATableFindStaidByAddr(pWDICtx,
32099 pwdiLLStatsClearReqParams->macAddr,
32100 &halLLStatsClearParams.sta_id))
32101 {
32102 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32103 MAC_ADDRESS_STR
32104 ": This station does not exist in the WDI Station Table",
32105 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32106
32107 wpalMemoryFree(pSendBuffer);
32108 return WDI_STATUS_E_FAILURE;
32109 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032110
32111 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032112 halLLStatsClearParams.stats_clear_req_mask =
32113 pwdiLLStatsClearReqParams->statsClearReqMask;
32114 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32115
32116 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32117 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32118 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32119 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32120 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32121 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32122 halLLStatsClearParams.stats_clear_req_mask);
32123 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32124 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32125
32126 wpalMemoryCopy(pSendBuffer+usDataOffset,
32127 &halLLStatsClearParams,
32128 sizeof(halLLStatsClearParams));
32129
32130 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32131
32132 /*-------------------------------------------------------------------------
32133 Send Clear Link Layer Stats Request to HAL
32134 -------------------------------------------------------------------------*/
32135 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32136 wdiLLStatsClearCb, pEventData->pUserData,
32137 WDI_LL_STATS_CLEAR_RSP);
32138}
32139#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032140
Abhishek Singh85b74712014-10-08 11:38:19 +053032141WDI_Status WDI_FWStatsGetReq( void* pUserData,
32142 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32143 wpt_uint32 stats)
32144{
32145 WDI_EventInfoType wdiEventData;
32146
32147 /*------------------------------------------------------------------------
32148 Sanity Check
32149 ------------------------------------------------------------------------*/
32150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32151 {
32152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32153 "WDI API call before module is initialized - Fail request");
32154 return WDI_STATUS_E_NOT_ALLOWED;
32155 }
32156 /*------------------------------------------------------------------------
32157 Fill in Event data and post to the Main FSM
32158 ------------------------------------------------------------------------*/
32159 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32160 wdiEventData.pEventData = (void *)&stats;
32161 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32162 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32163 wdiEventData.pUserData = pUserData;
32164
32165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32166
32167}
32168
Katya Nigamf0511f62015-05-05 16:40:57 +053032169WDI_Status
32170WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
32171 WDI_MonStartRspCb wdiMonStartRspCb,
32172 void* pUserData)
32173{
32174 WDI_EventInfoType wdiEventData;
32175
32176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32177 "%s", __func__);
32178
32179 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32180 {
32181 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32182 "WDI API call before module is initialized - Fail request");
32183
32184 return WDI_STATUS_E_NOT_ALLOWED;
32185 }
32186
32187 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32188 wdiEventData.pEventData = pwdiMonStartReqParams;
32189 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
32190 wdiEventData.pCBfnc = wdiMonStartRspCb;
32191 wdiEventData.pUserData = pUserData;
32192
32193 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32194}
32195
32196WDI_Status
32197WDI_ProcessMonStartReq
32198(
32199 WDI_ControlBlockType* pWDICtx,
32200 WDI_EventInfoType* pEventData
32201)
32202{
32203 WDI_MonStartReqType* pwdiMonStartReqParams;
32204 WDI_MonStartRspCb wdiMonStartCb;
32205 wpt_uint8* pSendBuffer = NULL;
32206 wpt_uint16 usSendSize = 0;
32207 wpt_uint16 usDataOffset = 0;
32208 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32209
32210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32211 "%s", __func__);
32212
32213 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32214 ( NULL == pEventData->pCBfnc ))
32215 {
32216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32217 "%s: Invalid parameters", __func__);
32218 WDI_ASSERT(0);
32219 return WDI_STATUS_E_FAILURE;
32220 }
32221
32222 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
32223 wdiMonStartCb = (WDI_MonStartRspCb)pEventData->pCBfnc;
32224
32225 /*-----------------------------------------------------------------------
32226 Get message buffer
32227 ! TO DO : proper conversion into the HAL Message Request Format
32228 -----------------------------------------------------------------------*/
32229 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32230 pWDICtx,
32231 WDI_MON_START_REQ,
32232 sizeof(tHalEnableMonitorModeReqParams),
32233 &pSendBuffer, &usDataOffset,
32234 &usSendSize))||
32235 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32236 {
32237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32238 "Unable to get send buffer in %s %p %p %p", __func__,
32239 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32240 WDI_ASSERT(0);
32241 return WDI_STATUS_E_FAILURE;
32242 }
32243
32244 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32245 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32246 pwdiMonStartReqParams->ChannelBW);
32247 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32248 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32249 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32250 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32251 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32252 pwdiMonStartReqParams->mmFilters[0].macAddr,
32253 sizeof( wpt_macAddr ));
32254 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32255 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32256 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32257 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32258
32259 wpalMemoryCopy(pSendBuffer+usDataOffset,
32260 &halEnableMonitorModeParams,
32261 sizeof(halEnableMonitorModeParams));
32262
32263 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32264
32265 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32266 wdiMonStartCb, pEventData->pUserData,
32267 WDI_MON_START_RSP);
32268}
32269
32270WDI_Status
32271WDI_ProcessMonStartRsp
32272(
32273 WDI_ControlBlockType* pWDICtx,
32274 WDI_EventInfoType* pEventData
32275)
32276{
32277 WDI_MonStartRspCb wdiMonStartRspCb;
32278
32279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32280 "%s: Enter ", __func__);
32281 /*-------------------------------------------------------------------------
32282 Sanity check
32283 -------------------------------------------------------------------------*/
32284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32285 ( NULL == pEventData->pEventData))
32286 {
32287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32288 "%s: Invalid parameters", __func__);
32289 WDI_ASSERT(0);
32290 return WDI_STATUS_E_FAILURE;
32291 }
32292
32293 wdiMonStartRspCb = (WDI_MonStartRspCb)pWDICtx->pfncRspCB;
32294
32295 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32296
32297 return WDI_STATUS_SUCCESS;
32298}
32299
32300WDI_Status
32301WDI_MonStopReq(WDI_MonStopRspCb wdiMonStopRspCb,
32302 void* pUserData)
32303{
32304 WDI_EventInfoType wdiEventData;
32305
32306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32307 "%s", __func__);
32308
32309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32310 {
32311 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32312 "WDI API call before module is initialized - Fail request");
32313
32314 return WDI_STATUS_E_NOT_ALLOWED;
32315 }
32316
32317 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32318 wdiEventData.pEventData = NULL;
32319 wdiEventData.uEventDataSize = sizeof(NULL);
32320 wdiEventData.pCBfnc = wdiMonStopRspCb;
32321 wdiEventData.pUserData = pUserData;
32322
32323 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32324}
32325
32326WDI_Status
32327WDI_ProcessMonStopReq
32328(
32329 WDI_ControlBlockType* pWDICtx,
32330 WDI_EventInfoType* pEventData
32331)
32332{
32333 WDI_MonStopRspCb wdiMonStopCb;
32334 wpt_uint8* pSendBuffer = NULL;
32335 wpt_uint16 usSendSize = 0;
32336 wpt_uint16 usDataOffset = 0;
32337 wpt_uint8 resetConfiguration;
32338
32339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32340 "%s", __func__);
32341
32342 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32343 {
32344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32345 "%s: Invalid parameters", __func__);
32346 WDI_ASSERT(0);
32347 return WDI_STATUS_E_FAILURE;
32348 }
32349
32350 wdiMonStopCb = (WDI_MonStopRspCb)pEventData->pCBfnc;
32351
32352 /*-----------------------------------------------------------------------
32353 Get message buffer
32354 ! TO DO : proper conversion into the HAL Message Request Format
32355 -----------------------------------------------------------------------*/
32356 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32357 pWDICtx,
32358 WDI_MON_STOP_REQ,
32359 sizeof(wpt_uint8),
32360 &pSendBuffer, &usDataOffset,
32361 &usSendSize))||
32362 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32363 {
32364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32365 "Unable to get send buffer in %s %p %p", __func__,
32366 pEventData, wdiMonStopCb);
32367 WDI_ASSERT(0);
32368 return WDI_STATUS_E_FAILURE;
32369 }
32370
32371 wpalMemoryCopy(pSendBuffer+usDataOffset,
32372 &resetConfiguration,
32373 sizeof(wpt_uint8));
32374
32375 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32376
32377 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32378 wdiMonStopCb, pEventData->pUserData,
32379 WDI_MON_STOP_RSP);
32380}
32381
32382WDI_Status
32383WDI_ProcessMonStopRsp
32384(
32385 WDI_ControlBlockType* pWDICtx,
32386 WDI_EventInfoType* pEventData
32387)
32388{
32389 WDI_MonStopRspCb wdiMonStopRspCb;
32390
32391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32392 "%s: Enter ", __func__);
32393 /*-------------------------------------------------------------------------
32394 Sanity check
32395 -------------------------------------------------------------------------*/
32396 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32397 {
32398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32399 "%s: Invalid parameters", __func__);
32400 WDI_ASSERT(0);
32401 return WDI_STATUS_E_FAILURE;
32402 }
32403
32404 wdiMonStopRspCb = (WDI_MonStopRspCb)pWDICtx->pfncRspCB;
32405
32406 wdiMonStopRspCb(pWDICtx->pRspCBUserData);
32407
32408 return WDI_STATUS_SUCCESS;
32409}
32410
Dino Mycle41bdc942014-06-10 11:30:24 +053032411#ifdef WLAN_FEATURE_EXTSCAN
32412
32413/**
32414 @brief Process EXTSCAN BUffer full indication from FW
32415
32416 @param pWDICtx: pointer to the WLAN DAL context
32417 pEventData: pointer to the event information structure
32418
32419 @see
32420 @return Result of the function call
32421*/
32422WDI_Status
32423WDI_ProcessEXTScanProgressInd
32424(
32425 WDI_ControlBlockType* pWDICtx,
32426 WDI_EventInfoType* pEventData
32427)
32428{
32429 WDI_LowLevelIndType wdiInd;
32430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32431
32432 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32433 "%s: ", __func__);
32434
32435 /* sanity check */
32436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32437 ( NULL == pEventData->pEventData))
32438 {
32439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32440 "%s: Invalid parameters", __func__);
32441 WDI_ASSERT(0);
32442 return WDI_STATUS_E_FAILURE;
32443 }
32444
32445 /* Fill in the indication parameters */
32446 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32447
32448 /* extract response and send it to UMAC */
32449 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32450
32451 /* Notify UMAC */
32452 if (pWDICtx->wdiLowLevelIndCB)
32453 {
32454 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32455 }
32456 else
32457 {
Dino Mycled3d50022014-07-07 12:58:25 +053032458 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032459 "%s: WDILowLevelIndCb is null", __func__);
32460 WDI_ASSERT(0);
32461 return WDI_STATUS_E_FAILURE;
32462 }
32463 return WDI_STATUS_SUCCESS;
32464
32465} /* End of WDI_ProcessEXTScanProgressInd */
32466
32467
32468/**
32469 @brief Process EXTScan Scan Available indication from FW
32470
32471 @param pWDICtx: pointer to the WLAN DAL context
32472 pEventData: pointer to the event information structure
32473
32474 @see
32475 @return Result of the function call
32476*/
32477WDI_Status
32478WDI_ProcessEXTScanScanAvailableInd
32479(
32480 WDI_ControlBlockType* pWDICtx,
32481 WDI_EventInfoType* pEventData
32482)
32483{
32484 WDI_LowLevelIndType wdiInd;
32485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32486
32487 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32488 "%s: ", __func__);
32489
32490 /* sanity check */
32491 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32492 ( NULL == pEventData->pEventData))
32493 {
32494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32495 "%s: Invalid parameters", __func__);
32496 WDI_ASSERT(0);
32497 return WDI_STATUS_E_FAILURE;
32498 }
32499
32500
32501
32502 /* Fill in the indication parameters */
32503 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32504
32505 /* extract response and send it to UMAC */
32506 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32507
32508 /* Notify UMAC */
32509 if (pWDICtx->wdiLowLevelIndCB)
32510 {
32511 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32512 }
32513 else
32514 {
32515 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32516 "%s: WDILowLevelIndCb is null", __func__);
32517 WDI_ASSERT(0);
32518 return WDI_STATUS_E_FAILURE;
32519 }
32520 return WDI_STATUS_SUCCESS;
32521} /* End of WDI_ProcessEXTScanScanDoneInd */
32522
32523/**
32524 @brief Process EXTScan Result Indication indication from FW
32525
32526 @param pWDICtx: pointer to the WLAN DAL context
32527 pEventData: pointer to the event information structure
32528
32529 @see
32530 @return Result of the function call
32531*/
32532WDI_Status
32533WDI_ProcessEXTScanResultInd
32534(
32535 WDI_ControlBlockType* pWDICtx,
32536 WDI_EventInfoType* pEventData
32537)
32538{
32539 WDI_LowLevelIndType wdiInd;
32540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32541
32542 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32543 "%s: ", __func__);
32544
32545 /* sanity check */
32546 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32547 ( NULL == pEventData->pEventData))
32548 {
32549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32550 "%s: Invalid parameters", __func__);
32551 WDI_ASSERT(0);
32552 return WDI_STATUS_E_FAILURE;
32553 }
32554
32555 /* Fill in the indication parameters */
32556 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32557
32558 /* extract response and send it to UMAC */
32559 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32560
32561 /* Notify UMAC */
32562 if (pWDICtx->wdiLowLevelIndCB)
32563 {
32564 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32565 }
32566 else
32567 {
32568 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32569 "%s: WDILowLevelIndCb is null", __func__);
32570 WDI_ASSERT(0);
32571 return WDI_STATUS_E_FAILURE;
32572 }
32573 return WDI_STATUS_SUCCESS;
32574} /* End of WDI_ProcessEXTScanResultInd */
32575
32576/**
32577 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32578
32579 @param pWDICtx: pointer to the WLAN DAL context
32580 pEventData: pointer to the event information structure
32581
32582 @see
32583 @return Result of the function call
32584*/
32585WDI_Status
32586WDI_ProcessEXTScanBssidHotListResultInd
32587(
32588 WDI_ControlBlockType* pWDICtx,
32589 WDI_EventInfoType* pEventData
32590)
32591{
32592 WDI_LowLevelIndType wdiInd;
32593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32594
32595 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32596 "%s: ", __func__);
32597
32598 /* sanity check */
32599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32600 ( NULL == pEventData->pEventData))
32601 {
32602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32603 "%s: Invalid parameters", __func__);
32604 WDI_ASSERT(0);
32605 return WDI_STATUS_E_FAILURE;
32606 }
32607
32608 /* Fill in the indication parameters */
32609 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32610
32611 /* extract response and send it to UMAC */
32612 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32613
32614 /* Notify UMAC */
32615 if (pWDICtx->wdiLowLevelIndCB)
32616 {
32617 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32618 }
32619 else
32620 {
32621 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32622 "%s: WDILowLevelIndCb is null", __func__);
32623 WDI_ASSERT(0);
32624 return WDI_STATUS_E_FAILURE;
32625 }
32626 return WDI_STATUS_SUCCESS;
32627} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32628
32629/**
32630 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32631
32632 @param pWDICtx: pointer to the WLAN DAL context
32633 pEventData: pointer to the event information structure
32634
32635 @see
32636 @return Result of the function call
32637*/
32638WDI_Status
32639WDI_ProcessEXTScanSignfRssiResultInd
32640(
32641 WDI_ControlBlockType* pWDICtx,
32642 WDI_EventInfoType* pEventData
32643)
32644{
32645 WDI_LowLevelIndType wdiInd;
32646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32647
32648 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32649 "%s: ", __func__);
32650
32651 /* sanity check */
32652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32653 ( NULL == pEventData->pEventData))
32654 {
32655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32656 "%s: Invalid parameters", __func__);
32657 WDI_ASSERT(0);
32658 return WDI_STATUS_E_FAILURE;
32659 }
32660
32661 /* Fill in the indication parameters */
32662 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32663
32664 /* extract response and send it to UMAC */
32665 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32666
32667 /* Notify UMAC */
32668 if (pWDICtx->wdiLowLevelIndCB)
32669 {
32670 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32671 }
32672 else
32673 {
32674 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32675 "%s: WDILowLevelIndCb is null", __func__);
32676 WDI_ASSERT(0);
32677 return WDI_STATUS_E_FAILURE;
32678 }
32679 return WDI_STATUS_SUCCESS;
32680} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32681
32682/**
32683 @brief WDI_EXTScanGetCapabilitiesReq
32684
32685 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32686 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32687 of the Req operation received from the device
32688 pUserData: user data will be passed back with the callback
32689
32690 @return SUCCESS or FAIL
32691*/
32692WDI_Status
32693WDI_EXTScanGetCapabilitiesReq(
32694 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32695 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32696 void* pUserData)
32697{
32698 WDI_EventInfoType wdiEventData;
32699
32700 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32701 "%s: %d ",__func__, __LINE__);
32702 /*------------------------------------------------------------------------
32703 Sanity Check
32704 ------------------------------------------------------------------------*/
32705 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32706 {
32707 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32708 "WDI API call before module is initialized - Fail request");
32709
32710 return WDI_STATUS_E_NOT_ALLOWED;
32711 }
32712
32713 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32714 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32715 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32716 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32717 wdiEventData.pUserData = pUserData;
32718
32719 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32720}
32721
32722/**
32723 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32724 Extended Scan Get Capability request to FW
32725
32726 @param pWDICtx : wdi context
32727 pEventData : indication data
32728
32729 @see
32730 @return none
32731*/
32732WDI_Status
32733WDI_ProcessEXTScanGetCapabilitiesReq
32734(
32735 WDI_ControlBlockType* pWDICtx,
32736 WDI_EventInfoType* pEventData
32737)
32738{
32739 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32740 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32741 wpt_uint8* pSendBuffer = NULL;
32742 wpt_uint16 usSendSize = 0;
32743 wpt_uint16 usDataOffset = 0;
32744 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32745
32746 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32747 "%s: %d Enter",__func__, __LINE__);
32748
32749 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32750 ( NULL == pEventData->pCBfnc ))
32751 {
32752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32753 "%s: Invalid parameters", __func__);
32754 WDI_ASSERT(0);
32755 return WDI_STATUS_E_FAILURE;
32756 }
32757
32758 pwdiEXTScanGetCapabilitiesReqParams =
32759 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32760 wdiEXTScanGetCapabilitiesRspCb =
32761 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32762
32763 /*-----------------------------------------------------------------------
32764 Get message buffer
32765 ! TO DO : proper conversion into the HAL Message Request Format
32766 -----------------------------------------------------------------------*/
32767 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32768 pWDICtx,
32769 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32770 sizeof(halEXTScanGetCapReqParams),
32771 &pSendBuffer, &usDataOffset,
32772 &usSendSize))||
32773 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32774 {
32775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32776 "Unable to get send buffer in %s %p %p %p", __func__,
32777 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32778 wdiEXTScanGetCapabilitiesRspCb);
32779 WDI_ASSERT(0);
32780 return WDI_STATUS_E_FAILURE;
32781 }
32782
32783 halEXTScanGetCapReqParams.requestId =
32784 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32785 halEXTScanGetCapReqParams.sessionId =
32786 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32787
32788 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32789 " requestId %u "
32790 " sessionId %u ",
32791 halEXTScanGetCapReqParams.requestId,
32792 halEXTScanGetCapReqParams.sessionId);
32793
32794 wpalMemoryCopy(pSendBuffer+usDataOffset,
32795 &halEXTScanGetCapReqParams,
32796 sizeof(halEXTScanGetCapReqParams));
32797
32798 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32799
32800
32801 /*-------------------------------------------------------------------------
32802 Send EXTScan Stop Request to HAL
32803 -------------------------------------------------------------------------*/
32804 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32805 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32806 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32807}
32808
32809/**
32810 @brief WDI_EXTScanGetCachedResultsReq
32811
32812 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32813 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32814 of the Req operation received from the device
32815 pUserData: user data will be passed back with the callback
32816
32817 @return SUCCESS or FAIL
32818*/
32819
32820WDI_Status
32821WDI_EXTScanGetCachedResultsReq(
32822 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32823 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32824 void* pUserData)
32825{
32826 WDI_EventInfoType wdiEventData;
32827
32828 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32829 "%s: %d Enter",__func__, __LINE__);
32830 /*------------------------------------------------------------------------
32831 Sanity Check
32832 ------------------------------------------------------------------------*/
32833 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32834 {
32835 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32836 "WDI API call before module is initialized - Fail request");
32837
32838 return WDI_STATUS_E_NOT_ALLOWED;
32839 }
32840
32841 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32842 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32843 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32844 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32845 wdiEventData.pUserData = pUserData;
32846
32847 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32848}
32849
32850/**
32851 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32852 Extended Scan Get Cached Result request to FW
32853
32854 @param pWDICtx : wdi context
32855 pEventData : indication data
32856
32857 @see
32858 @return none
32859*/
32860WDI_Status
32861WDI_ProcessEXTScanGetCachedResultsReq
32862(
32863 WDI_ControlBlockType* pWDICtx,
32864 WDI_EventInfoType* pEventData
32865)
32866{
32867 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32868 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32869 wpt_uint8* pSendBuffer = NULL;
32870 wpt_uint16 usSendSize = 0;
32871 wpt_uint16 usDataOffset = 0;
32872 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32873
32874 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32875 "%s: %d Enter",__func__, __LINE__);
32876
32877 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32878 ( NULL == pEventData->pCBfnc ))
32879 {
32880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32881 "%s: Invalid parameters", __func__);
32882 WDI_ASSERT(0);
32883 return WDI_STATUS_E_FAILURE;
32884 }
32885
32886 pwdiEXTScanGetCachedResultsReqParams =
32887 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32888 wdiEXTScanGetCachedResultsCb =
32889 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32890
32891 /*-----------------------------------------------------------------------
32892 Get message buffer
32893 ! TO DO : proper conversion into the HAL Message Request Format
32894 -----------------------------------------------------------------------*/
32895 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32896 pWDICtx,
32897 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32898 sizeof(tHalExtScanGetScanReq),
32899 &pSendBuffer, &usDataOffset,
32900 &usSendSize))||
32901 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32902 {
32903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32904 "Unable to get send buffer in %s %p %p %p", __func__,
32905 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32906 wdiEXTScanGetCachedResultsCb);
32907 WDI_ASSERT(0);
32908 return WDI_STATUS_E_FAILURE;
32909 }
32910
32911 halEXTScanGetScanReqParams.requestId =
32912 pwdiEXTScanGetCachedResultsReqParams->requestId;
32913 halEXTScanGetScanReqParams.sessionId =
32914 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32915 halEXTScanGetScanReqParams.flush =
32916 pwdiEXTScanGetCachedResultsReqParams->flush;
32917
32918 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32919 " requestId %u "
32920 " sessionId %u "
32921 " flush %u ",
32922 halEXTScanGetScanReqParams.requestId,
32923 halEXTScanGetScanReqParams.sessionId,
32924 halEXTScanGetScanReqParams.flush);
32925
32926 wpalMemoryCopy(pSendBuffer+usDataOffset,
32927 &halEXTScanGetScanReqParams,
32928 sizeof(halEXTScanGetScanReqParams));
32929
32930 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32931
32932
32933 /*-------------------------------------------------------------------------
32934 Send EXTScan Stop Request to HAL
32935 -------------------------------------------------------------------------*/
32936 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32937 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32938 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32939}
32940
32941/**
32942 @brief WDI_EXTScanStopReq
32943
32944 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32945 WDI_EXTScanStopRspCb: callback for passing back the response
32946 of the Req operation received from the device
32947 pUserData: user data will be passed back with the callback
32948
32949 @return SUCCESS or FAIL
32950*/
32951WDI_Status
32952WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32953 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32954 void* pUserData)
32955{
32956 WDI_EventInfoType wdiEventData;
32957
32958 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32959 "%s: %d ",__func__, __LINE__);
32960 /*------------------------------------------------------------------------
32961 Sanity Check
32962 ------------------------------------------------------------------------*/
32963 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32964 {
32965 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32966 "WDI API call before module is initialized - Fail request");
32967
32968 return WDI_STATUS_E_NOT_ALLOWED;
32969 }
32970
32971 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32972 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32973 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32974 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32975 wdiEventData.pUserData = pUserData;
32976
32977 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32978}
32979
32980/**
32981 @brief WDI_ProcessEXTScanStopReq -
32982 Extended Scan Stop request to FW
32983
32984 @param pWDICtx : wdi context
32985 pEventData : indication data
32986
32987 @see
32988 @return none
32989*/
32990WDI_Status
32991WDI_ProcessEXTScanStopReq
32992(
32993 WDI_ControlBlockType* pWDICtx,
32994 WDI_EventInfoType* pEventData
32995)
32996{
32997 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32998 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32999 wpt_uint8* pSendBuffer = NULL;
33000 wpt_uint16 usSendSize = 0;
33001 wpt_uint16 usDataOffset = 0;
33002 tHalExtScanStopReq halEXTScanStopReqParams;
33003
33004 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33005 "%s: %d ",__func__, __LINE__);
33006
33007 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33008 ( NULL == pEventData->pCBfnc ))
33009 {
33010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33011 "%s: Invalid parameters", __func__);
33012 WDI_ASSERT(0);
33013 return WDI_STATUS_E_FAILURE;
33014 }
33015
33016 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33017 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33018
33019 /*-----------------------------------------------------------------------
33020 Get message buffer
33021 ! TO DO : proper conversion into the HAL Message Request Format
33022 -----------------------------------------------------------------------*/
33023 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33024 pWDICtx,
33025 WDI_EXTSCAN_STOP_REQ,
33026 sizeof(tHalExtScanStopReq),
33027 &pSendBuffer, &usDataOffset,
33028 &usSendSize))||
33029 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33030 {
33031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33032 "Unable to get send buffer in %s %p %p %p", __func__,
33033 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33034 WDI_ASSERT(0);
33035 return WDI_STATUS_E_FAILURE;
33036 }
33037
33038 halEXTScanStopReqParams.requestId =
33039 pwdiEXTScanStopReqParams->requestId;
33040 halEXTScanStopReqParams.sessionId =
33041 pwdiEXTScanStopReqParams->sessionId;
33042
33043 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33044 " halEXTScanStopReqParams.requestId %u "
33045 " halEXTScanStopReqParams.sessionId %u ",
33046 halEXTScanStopReqParams.requestId,
33047 halEXTScanStopReqParams.sessionId);
33048
33049 wpalMemoryCopy(pSendBuffer+usDataOffset,
33050 &halEXTScanStopReqParams,
33051 sizeof(halEXTScanStopReqParams));
33052
33053 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33054
33055
33056 /*-------------------------------------------------------------------------
33057 Send EXTScan Stop Request to HAL
33058 -------------------------------------------------------------------------*/
33059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33060 wdiEXTScanStopCb, pEventData->pUserData,
33061 WDI_EXTSCAN_STOP_RSP);
33062}
33063
33064/**
33065 @brief WDI_EXTScanStartReq
33066
33067 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33068 WDI_EXTScanStartRspCb: callback for passing back the response
33069 of the Req operation received from the device
33070 pUserData: user data will be passed back with the callback
33071
33072 @return SUCCESS or FAIL
33073*/
33074WDI_Status
33075WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33076 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33077 void* pUserData)
33078{
33079 WDI_EventInfoType wdiEventData;
33080
33081 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33082 "%s: %d Enter",__func__, __LINE__);
33083 /*------------------------------------------------------------------------
33084 Sanity Check
33085 ------------------------------------------------------------------------*/
33086 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33087 {
33088 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33089 "WDI API call before module is initialized - Fail request");
33090
33091 return WDI_STATUS_E_NOT_ALLOWED;
33092 }
33093
33094 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33095 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33096 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33097 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33098 wdiEventData.pUserData = pUserData;
33099
33100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33101}
33102
33103/**
33104 @brief WDI_ProcessEXTScanStartReq -
33105 Extended Scan Start Request to FW
33106
33107 @param pWDICtx : wdi context
33108 pEventData : indication data
33109
33110 @see
33111 @return none
33112*/
33113WDI_Status
33114WDI_ProcessEXTScanStartReq
33115(
33116 WDI_ControlBlockType* pWDICtx,
33117 WDI_EventInfoType* pEventData
33118)
33119{
33120 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33121 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33122 wpt_uint8* pSendBuffer = NULL;
33123 wpt_uint16 usSendSize = 0;
33124 wpt_uint16 usDataOffset = 0;
33125 tpHalExtScanStartReq pHalExtScanStartReqParams;
33126 int i = 0;
33127 int j = 0;
33128
33129 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33130 "%s: %d Enter",__func__, __LINE__);
33131
33132 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33133 ( NULL == pEventData->pCBfnc ))
33134 {
33135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33136 "%s: Invalid parameters", __func__);
33137 WDI_ASSERT(0);
33138 return WDI_STATUS_E_FAILURE;
33139 }
33140
33141 pwdiEXTScanStartReqParams =
33142 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33143 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33144
33145 /*-----------------------------------------------------------------------
33146 Get message buffer
33147 ! TO DO : proper conversion into the HAL Message Request Format
33148 -----------------------------------------------------------------------*/
33149 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33150 pWDICtx,
33151 WDI_EXTSCAN_START_REQ,
33152 sizeof(tHalExtScanStartReq),
33153 &pSendBuffer, &usDataOffset,
33154 &usSendSize))||
33155 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33156 {
33157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33158 "Unable to get send buffer in %s %p %p %p", __func__,
33159 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33160 WDI_ASSERT(0);
33161 return WDI_STATUS_E_FAILURE;
33162 }
33163
33164 pHalExtScanStartReqParams =
33165 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33166
33167 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33168 pHalExtScanStartReqParams->maxApPerScan =
33169 pwdiEXTScanStartReqParams->maxAPperScan;
33170 pHalExtScanStartReqParams->reportThreshold =
33171 pwdiEXTScanStartReqParams->reportThreshold;
33172 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33173 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33174 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
33175
33176 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33177 {
33178 pHalExtScanStartReqParams->bucketData[i].bucketId =
33179 pwdiEXTScanStartReqParams->buckets[i].bucket;
33180 pHalExtScanStartReqParams->bucketData[i].channelBand =
33181 pwdiEXTScanStartReqParams->buckets[i].band;
33182 pHalExtScanStartReqParams->bucketData[i].period =
33183 pwdiEXTScanStartReqParams->buckets[i].period;
33184 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33185 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
33186 pHalExtScanStartReqParams->bucketData[i].numChannels =
33187 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33188
33189 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33190 {
33191 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33192 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33193 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33194 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33195 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33196 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33197 }
33198
33199 }
33200
33201
33202 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33203 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
33204 " sessionId %u numBuckets%u ",
33205 pHalExtScanStartReqParams->basePeriod,
33206 pHalExtScanStartReqParams->maxApPerScan,
33207 pHalExtScanStartReqParams->reportThreshold,
33208 pHalExtScanStartReqParams->requestId,
33209 pHalExtScanStartReqParams->sessionId,
33210 pHalExtScanStartReqParams->numBuckets);
33211
33212 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33213 {
33214 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33215 " %d) bucketId %u channelBand %u period %u "
33216 " reportEvents %u numChannels %u ",i,
33217 pHalExtScanStartReqParams->bucketData[i].bucketId,
33218 pHalExtScanStartReqParams->bucketData[i].channelBand,
33219 pHalExtScanStartReqParams->bucketData[i].period,
33220 pHalExtScanStartReqParams->bucketData[i].reportEvents,
33221 pHalExtScanStartReqParams->bucketData[i].numChannels);
33222
33223 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33224 {
33225 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33226 "%d) channel %u dwellTimeMs %u passive %u ",j,
33227 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33228 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33229 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33230 }
33231
33232 }
33233
Dino Mycle41bdc942014-06-10 11:30:24 +053033234 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33235
33236 /*-------------------------------------------------------------------------
33237 Send EXTSCAN Start Request to HAL
33238 -------------------------------------------------------------------------*/
33239 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33240 wdiEXTScanStartCb, pEventData->pUserData,
33241 WDI_EXTSCAN_START_RSP);
33242}
33243
33244/**
33245 @brief WDI_EXTScanSetBSSIDHotlistReq
33246
33247 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33248 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33249 of the Req operation received from the device
33250 pUserData: user data will be passed back with the callback
33251
33252 @return SUCCESS or FAIL
33253*/
33254WDI_Status
33255WDI_EXTScanSetBSSIDHotlistReq(
33256 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33257 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33258 void* pUserData)
33259{
33260 WDI_EventInfoType wdiEventData;
33261
33262 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33263 "%s: %d Enter ",__func__, __LINE__);
33264 /*------------------------------------------------------------------------
33265 Sanity Check
33266 ------------------------------------------------------------------------*/
33267 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33268 {
33269 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33270 "WDI API call before module is initialized - Fail request");
33271
33272 return WDI_STATUS_E_NOT_ALLOWED;
33273 }
33274
33275 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33276 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33277 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33278 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33279 wdiEventData.pUserData = pUserData;
33280
33281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33282}
33283
33284/**
33285 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33286 Extended Scan Set BSSSID Hotlist Request to FW
33287
33288 @param pWDICtx : wdi context
33289 pEventData : indication data
33290
33291 @see
33292 @return none
33293*/
33294WDI_Status
33295WDI_ProcessEXTScanSetBSSIDHotlistReq
33296(
33297 WDI_ControlBlockType* pWDICtx,
33298 WDI_EventInfoType* pEventData
33299)
33300{
33301 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33302 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33303 wpt_uint8* pSendBuffer = NULL;
33304 wpt_uint16 usSendSize = 0;
33305 wpt_uint16 usDataOffset = 0;
33306 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33307 int i;
33308
33309 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33310 "%s: %d Enter",__func__, __LINE__);
33311
33312 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33313 ( NULL == pEventData->pCBfnc ))
33314 {
33315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33316 "%s: Invalid parameters", __func__);
33317 WDI_ASSERT(0);
33318 return WDI_STATUS_E_FAILURE;
33319 }
33320
33321 pwdiEXTScanSetBSSIDHotlistReqParams =
33322 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33323 wdiEXTScanSetBSSIDHotlistRspCb =
33324 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33325
33326 /*-----------------------------------------------------------------------
33327 Get message buffer
33328 ! TO DO : proper conversion into the HAL Message Request Format
33329 -----------------------------------------------------------------------*/
33330 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33331 pWDICtx,
33332 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33333 sizeof(tHalBssidHotlistSetReq),
33334 &pSendBuffer, &usDataOffset,
33335 &usSendSize))||
33336 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33337 {
33338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33339 "Unable to get send buffer in %s %p %p %p", __func__,
33340 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33341 wdiEXTScanSetBSSIDHotlistRspCb);
33342 WDI_ASSERT(0);
33343 return WDI_STATUS_E_FAILURE;
33344 }
33345 pHalBssidHotlistSetReqParams =
33346 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33347
33348 pHalBssidHotlistSetReqParams->requestId =
33349 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33350
33351 pHalBssidHotlistSetReqParams->sessionId =
33352 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33353
33354 pHalBssidHotlistSetReqParams->numAp =
33355 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
33356
33357 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33358
33359 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33360 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33361 WDI_MAC_ADDR_LEN);
33362
33363 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33364 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33365
33366 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33367 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33368
33369 pHalBssidHotlistSetReqParams->ap[i].channel =
33370 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
33371
33372 }
33373
33374 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33375 "ReqID %u sessionId %u numAp %u ",
33376 pHalBssidHotlistSetReqParams->requestId,
33377 pHalBssidHotlistSetReqParams->sessionId,
33378 pHalBssidHotlistSetReqParams->numAp);
33379
33380 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
33381
33382 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33383 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33384 __func__, __LINE__, i,
33385 pHalBssidHotlistSetReqParams->ap[i].bssid,
33386 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
33387 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
33388 pHalBssidHotlistSetReqParams->ap[i].channel);
33389
33390 }
33391
33392 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33393
33394
33395 /*-------------------------------------------------------------------------
33396 Send EXTScan Stop Request to HAL
33397 -------------------------------------------------------------------------*/
33398 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33399 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33400 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33401}
33402
33403/**
33404 @brief WDI_EXTScanResetBSSIDHotlistReq
33405
33406 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33407 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33408 of the Req operation received from the device
33409 pUserData: user data will be passed back with the callback
33410
33411 @return SUCCESS or FAIL
33412*/
33413WDI_Status
33414WDI_EXTScanResetBSSIDHotlistReq(
33415 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33416 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33417 void* pUserData)
33418{
33419 WDI_EventInfoType wdiEventData;
33420
33421 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33422 "%s: %d",__func__, __LINE__);
33423 /*------------------------------------------------------------------------
33424 Sanity Check
33425 ------------------------------------------------------------------------*/
33426 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33427 {
33428 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33429 "WDI API call before module is initialized - Fail request");
33430
33431 return WDI_STATUS_E_NOT_ALLOWED;
33432 }
33433
33434 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33435 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33436 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33437 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33438 wdiEventData.pUserData = pUserData;
33439
33440 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33441}
33442
33443/**
33444 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33445 Extended Scan reset BSSID hotlist Request to FW
33446
33447 @param pWDICtx : wdi context
33448 pEventData : indication data
33449
33450 @see
33451 @return none
33452*/
33453WDI_Status
33454WDI_ProcessEXTScanResetBSSIDHotlistReq
33455(
33456 WDI_ControlBlockType* pWDICtx,
33457 WDI_EventInfoType* pEventData
33458)
33459{
33460 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33461 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33462 wpt_uint8* pSendBuffer = NULL;
33463 wpt_uint16 usSendSize = 0;
33464 wpt_uint16 usDataOffset = 0;
33465 tpHalHotlistResetReq pHalHotlistResetReqParams;
33466
33467 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33468 "%s: %d",__func__, __LINE__);
33469
33470 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33471 ( NULL == pEventData->pCBfnc ))
33472 {
33473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33474 "%s: Invalid parameters", __func__);
33475 WDI_ASSERT(0);
33476 return WDI_STATUS_E_FAILURE;
33477 }
33478
33479 pwdiEXTScanResetBSSIDHotlistReqParams =
33480 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33481 wdiEXTScanResetBSSIDHotlistRspCb =
33482 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33483
33484 /*-----------------------------------------------------------------------
33485 Get message buffer
33486 ! TO DO : proper conversion into the HAL Message Request Format
33487 -----------------------------------------------------------------------*/
33488 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33489 pWDICtx,
33490 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33491 sizeof(tHalHotlistResetReq),
33492 &pSendBuffer, &usDataOffset,
33493 &usSendSize))||
33494 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33495 {
33496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33497 "Unable to get send buffer in %s %p %p %p", __func__,
33498 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33499 wdiEXTScanResetBSSIDHotlistRspCb);
33500 WDI_ASSERT(0);
33501 return WDI_STATUS_E_FAILURE;
33502 }
33503 pHalHotlistResetReqParams =
33504 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33505
33506 pHalHotlistResetReqParams->requestId =
33507 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33508
33509 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33510
33511 /*-------------------------------------------------------------------------
33512 Send EXTScan Stop Request to HAL
33513 -------------------------------------------------------------------------*/
33514 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33515 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33516 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33517}
33518
33519/**
33520 @brief WDI_EXTScanSetSignfRSSIChangeReq
33521
33522 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
33523 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
33524 of the Req operation received from the device
33525 pUserData: user data will be passed back with the callback
33526
33527 @return SUCCESS or FAIL
33528*/
33529WDI_Status
33530WDI_EXTScanSetSignfRSSIChangeReq(
33531 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
33532 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
33533 void* pUserData)
33534{
33535 WDI_EventInfoType wdiEventData;
33536
33537 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33538 "%s: %d ",__func__, __LINE__);
33539 /*------------------------------------------------------------------------
33540 Sanity Check
33541 ------------------------------------------------------------------------*/
33542 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33543 {
33544 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33545 "WDI API call before module is initialized - Fail request");
33546
33547 return WDI_STATUS_E_NOT_ALLOWED;
33548 }
33549
33550 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
33551 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
33552 wdiEventData.uEventDataSize =
33553 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
33554 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
33555 wdiEventData.pUserData = pUserData;
33556
33557 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33558}
33559
33560/**
33561 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
33562 Extended Scan set Significant RSSI change Request to FW
33563
33564 @param pWDICtx : wdi context
33565 pEventData : indication data
33566
33567 @see
33568 @return none
33569*/
33570WDI_Status
33571WDI_ProcessEXTScanSetSignifRSSIChangeReq
33572(
33573 WDI_ControlBlockType* pWDICtx,
33574 WDI_EventInfoType* pEventData
33575)
33576{
33577 WDI_EXTScanSetSignfRSSIChangeReqParams*
33578 pwdiEXTScanSetSignfRSSIChangeReqParams;
33579 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33580 wpt_uint8* pSendBuffer = NULL;
33581 wpt_uint16 usSendSize = 0;
33582 wpt_uint16 usDataOffset = 0;
33583 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
33584 int i;
33585
33586 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33587 "%s: %d Enter",__func__, __LINE__);
33588
33589 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33590 ( NULL == pEventData->pCBfnc ))
33591 {
33592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33593 "%s: Invalid parameters", __func__);
33594 WDI_ASSERT(0);
33595 return WDI_STATUS_E_FAILURE;
33596 }
33597
33598 pwdiEXTScanSetSignfRSSIChangeReqParams =
33599 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
33600 wdiEXTScanSetSignfRSSIChangeRspCb =
33601 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33602
33603 /*-----------------------------------------------------------------------
33604 Get message buffer
33605 ! TO DO : proper conversion into the HAL Message Request Format
33606 -----------------------------------------------------------------------*/
33607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33608 pWDICtx,
33609 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
33610 sizeof(tHalSigRssiSetReq),
33611 &pSendBuffer, &usDataOffset,
33612 &usSendSize))||
33613 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
33614 {
33615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33616 "Unable to get send buffer in %s %p %p %p", __func__,
33617 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
33618 wdiEXTScanSetSignfRSSIChangeRspCb);
33619 WDI_ASSERT(0);
33620 return WDI_STATUS_E_FAILURE;
33621 }
33622
33623 pHalSigRssiSetReqParams =
33624 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
33625
33626 pHalSigRssiSetReqParams->requestId =
33627 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33628 pHalSigRssiSetReqParams->sessionId =
33629 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33630 pHalSigRssiSetReqParams->rssiSampleSize =
33631 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33632 pHalSigRssiSetReqParams->lostApSampleSize =
33633 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33634 pHalSigRssiSetReqParams->minBreaching =
33635 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33636 pHalSigRssiSetReqParams->numAp =
33637 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33638
33639
33640 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33641
33642 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33643 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33644 WDI_MAC_ADDR_LEN);
33645
33646 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33647 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33648
33649 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33650 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33651
33652 pHalSigRssiSetReqParams->ap[i].channel =
33653 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33654
33655 }
33656
33657
33658 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33659 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33660 " minBreaching %u numAp %u ",
33661 pHalSigRssiSetReqParams->requestId,
33662 pHalSigRssiSetReqParams->sessionId,
33663 pHalSigRssiSetReqParams->rssiSampleSize,
33664 pHalSigRssiSetReqParams->lostApSampleSize,
33665 pHalSigRssiSetReqParams->minBreaching,
33666 pHalSigRssiSetReqParams->numAp);
33667
33668 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33669
33670 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33671 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33672 i,
33673 pHalSigRssiSetReqParams->ap[i].bssid,
33674 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33675 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33676 pHalSigRssiSetReqParams->ap[i].channel);
33677
33678 }
33679
33680 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33681
33682
33683 /*-------------------------------------------------------------------------
33684 Send EXTScan Stop Request to HAL
33685 -------------------------------------------------------------------------*/
33686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33687 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33688 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33689}
33690
33691/**
33692 @brief WDI_EXTScanResetSignfRSSIChangeReq
33693
33694 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33695 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33696 of the Req operation received from the device
33697 pUserData: user data will be passed back with the callback
33698
33699 @return SUCCESS or FAIL
33700*/
33701WDI_Status
33702WDI_EXTScanResetSignfRSSIChangeReq(
33703 WDI_EXTScanResetSignfRSSIChangeReqParams*
33704 pwdiEXTScanResetSignfRSSIChangeReqParams,
33705 WDI_EXTScanResetSignfRSSIChangeRspCb
33706 wdiEXTScanResetSignfRSSIChangeRspCb,
33707 void* pUserData)
33708{
33709 WDI_EventInfoType wdiEventData;
33710
33711 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33712 "%s: %d ",__func__, __LINE__);
33713 /*------------------------------------------------------------------------
33714 Sanity Check
33715 ------------------------------------------------------------------------*/
33716 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33717 {
33718 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33719 "WDI API call before module is initialized - Fail request");
33720
33721 return WDI_STATUS_E_NOT_ALLOWED;
33722 }
33723
33724 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33725 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33726 wdiEventData.uEventDataSize =
33727 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33728 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33729 wdiEventData.pUserData = pUserData;
33730
33731 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33732}
33733
33734/**
33735 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33736 Extended Scana reset Significant RSSI change Request to FW
33737
33738 @param pWDICtx : wdi context
33739 pEventData : indication data
33740
33741 @see
33742 @return none
33743*/
33744WDI_Status
33745WDI_ProcessEXTScanResetSignfRSSIChangeReq
33746(
33747 WDI_ControlBlockType* pWDICtx,
33748 WDI_EventInfoType* pEventData
33749)
33750{
33751 WDI_EXTScanResetSignfRSSIChangeReqParams*
33752 pwdiEXTScanResetSignfRSSIChangeReqParams;
33753 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33754 wpt_uint8* pSendBuffer = NULL;
33755 wpt_uint16 usSendSize = 0;
33756 wpt_uint16 usDataOffset = 0;
33757 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33758
33759 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33760 "%s: %d ",__func__, __LINE__);
33761
33762 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33763 ( NULL == pEventData->pCBfnc ))
33764 {
33765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33766 "%s: Invalid parameters", __func__);
33767 WDI_ASSERT(0);
33768 return WDI_STATUS_E_FAILURE;
33769 }
33770
33771 pwdiEXTScanResetSignfRSSIChangeReqParams =
33772 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33773 wdiEXTScanResetSignfRSSIChangeRspCb =
33774 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33775
33776 /*-----------------------------------------------------------------------
33777 Get message buffer
33778 ! TO DO : proper conversion into the HAL Message Request Format
33779 -----------------------------------------------------------------------*/
33780 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33781 pWDICtx,
33782 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33783 sizeof(tHalSigRssiResetReq),
33784 &pSendBuffer, &usDataOffset,
33785 &usSendSize))||
33786 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33787 {
33788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33789 "Unable to get send buffer in %s %p %p %p", __func__,
33790 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33791 wdiEXTScanResetSignfRSSIChangeRspCb);
33792 WDI_ASSERT(0);
33793 return WDI_STATUS_E_FAILURE;
33794 }
33795 pHalSigRssiResetReqParams =
33796 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33797
33798 pHalSigRssiResetReqParams->requestId =
33799 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33800
33801 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33802
33803
33804 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33805 wdiEXTScanResetSignfRSSIChangeRspCb,
33806 pEventData->pUserData,
33807 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33808}
33809
33810/**
33811 @brief Process Extended Scan Start Rsp function (called when a response
33812 is being received over the bus from HAL)
33813
33814 @param pWDICtx: pointer to the WLAN DAL context
33815 pEventData: pointer to the event information structure
33816
33817 @see
33818 @return Result of the function call
33819*/
33820WDI_Status
33821WDI_ProcessEXTScanStartRsp
33822(
33823 WDI_ControlBlockType* pWDICtx,
33824 WDI_EventInfoType* pEventData
33825)
33826{
33827 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33828
33829 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33830 "%s: %d",__func__, __LINE__);
33831 /*-------------------------------------------------------------------------
33832 Sanity check
33833 -------------------------------------------------------------------------*/
33834 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33835 ( NULL == pEventData->pEventData))
33836 {
33837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33838 "%s: Invalid parameters", __func__);
33839 WDI_ASSERT(0);
33840 return WDI_STATUS_E_FAILURE;
33841 }
33842
33843 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33844 if ( NULL == wdiEXTScanStartRspCb)
33845 {
33846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33847 "%s: Callback function Invalid", __func__);
33848 WDI_ASSERT(0);
33849 return WDI_STATUS_E_FAILURE;
33850 }
33851
33852 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33853
33854 return WDI_STATUS_SUCCESS;
33855}
33856
33857
33858/**
33859 @brief Process Extended Scan Stop Rsp function (called when a response
33860 is being received over the bus from HAL)
33861
33862 @param pWDICtx: pointer to the WLAN DAL context
33863 pEventData: pointer to the event information structure
33864
33865 @see
33866 @return Result of the function call
33867*/
33868WDI_Status
33869WDI_ProcessEXTScanStopRsp
33870(
33871 WDI_ControlBlockType* pWDICtx,
33872 WDI_EventInfoType* pEventData
33873)
33874{
33875 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33876
33877 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33878 "%s: %d",__func__, __LINE__);
33879
33880
33881 /*-------------------------------------------------------------------------
33882 Sanity check
33883 -------------------------------------------------------------------------*/
33884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33885 ( NULL == pEventData->pEventData))
33886 {
33887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33888 "%s: Invalid parameters", __func__);
33889 WDI_ASSERT(0);
33890 return WDI_STATUS_E_FAILURE;
33891 }
33892
33893 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33894 if ( NULL == wdiEXTScanStopRspCb)
33895 {
33896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33897 "%s: Callback function Invalid", __func__);
33898 WDI_ASSERT(0);
33899 return WDI_STATUS_E_FAILURE;
33900 }
33901
33902 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33903
33904 return WDI_STATUS_SUCCESS;
33905}
33906
33907/**
33908 @brief Process Extended Scan Get Cached Rsp function (called when a response
33909 is being received over the bus from HAL)
33910
33911 @param pWDICtx: pointer to the WLAN DAL context
33912 pEventData: pointer to the event information structure
33913
33914 @see
33915 @return Result of the function call
33916*/
33917WDI_Status
33918WDI_ProcessEXTScanGetCachedResultsRsp
33919(
33920 WDI_ControlBlockType* pWDICtx,
33921 WDI_EventInfoType* pEventData
33922)
33923{
33924 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33925
33926 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33927 "%s: %d Enter",__func__, __LINE__);
33928
33929
33930 /*-------------------------------------------------------------------------
33931 Sanity check
33932 -------------------------------------------------------------------------*/
33933 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33934 ( NULL == pEventData->pEventData))
33935 {
33936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33937 "%s: Invalid parameters", __func__);
33938 WDI_ASSERT(0);
33939 return WDI_STATUS_E_FAILURE;
33940 }
33941
33942 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33943 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33944 {
33945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33946 "%s: Callback function Invalid", __func__);
33947 WDI_ASSERT(0);
33948 return WDI_STATUS_E_FAILURE;
33949 }
33950
33951 wdiEXTScanGetCachedResultsRspCb(
33952 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33953
33954 return WDI_STATUS_SUCCESS;
33955}
33956
33957/**
33958 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33959 is being received over the bus from HAL)
33960
33961 @param pWDICtx: pointer to the WLAN DAL context
33962 pEventData: pointer to the event information structure
33963
33964 @see
33965 @return Result of the function call
33966*/
33967WDI_Status
33968WDI_ProcessEXTScanGetCapabilitiesRsp
33969(
33970 WDI_ControlBlockType* pWDICtx,
33971 WDI_EventInfoType* pEventData
33972)
33973{
33974 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33975
33976 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33977 "%s: %d ",__func__, __LINE__);
33978
33979
33980 /*-------------------------------------------------------------------------
33981 Sanity check
33982 -------------------------------------------------------------------------*/
33983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33984 ( NULL == pEventData->pEventData))
33985 {
33986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33987 "%s: Invalid parameters", __func__);
33988 WDI_ASSERT(0);
33989 return WDI_STATUS_E_FAILURE;
33990 }
33991
33992 wdiEXTScanGetCapabilitiesRspCb =
33993 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33994 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33995 {
33996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33997 "%s: Callback function Invalid", __func__);
33998 WDI_ASSERT(0);
33999 return WDI_STATUS_E_FAILURE;
34000 }
34001
34002 wdiEXTScanGetCapabilitiesRspCb(
34003 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34004
34005 return WDI_STATUS_SUCCESS;
34006}
34007
34008/**
34009 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34010 response is being received over the bus from HAL)
34011
34012 @param pWDICtx: pointer to the WLAN DAL context
34013 pEventData: pointer to the event information structure
34014
34015 @see
34016 @return Result of the function call
34017*/
34018WDI_Status
34019WDI_ProcessEXTScanSetHotlistBSSIDRsp
34020(
34021 WDI_ControlBlockType* pWDICtx,
34022 WDI_EventInfoType* pEventData
34023)
34024{
34025 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34026
34027 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34028 "%s: %d ",__func__, __LINE__);
34029
34030
34031 /*-------------------------------------------------------------------------
34032 Sanity check
34033 -------------------------------------------------------------------------*/
34034 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34035 ( NULL == pEventData->pEventData))
34036 {
34037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34038 "%s: Invalid parameters", __func__);
34039 WDI_ASSERT(0);
34040 return WDI_STATUS_E_FAILURE;
34041 }
34042
34043 wdiEXTScanSetBSSIDHotlistRspCb =
34044 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34045 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34046 {
34047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34048 "%s: Callback function Invalid", __func__);
34049 WDI_ASSERT(0);
34050 return WDI_STATUS_E_FAILURE;
34051 }
34052
34053 wdiEXTScanSetBSSIDHotlistRspCb(
34054 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34055
34056 return WDI_STATUS_SUCCESS;
34057}
34058
34059/**
34060 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34061 when a response is being received over the bus from HAL)
34062
34063 @param pWDICtx: pointer to the WLAN DAL context
34064 pEventData: pointer to the event information structure
34065
34066 @see
34067 @return Result of the function call
34068*/
34069WDI_Status
34070WDI_ProcessEXTScanResetHotlistBSSIDRsp
34071(
34072 WDI_ControlBlockType* pWDICtx,
34073 WDI_EventInfoType* pEventData
34074)
34075{
34076 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34077
34078 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34079 "%s: %d ",__func__, __LINE__);
34080
34081
34082 /*-------------------------------------------------------------------------
34083 Sanity check
34084 -------------------------------------------------------------------------*/
34085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34086 ( NULL == pEventData->pEventData))
34087 {
34088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34089 "%s: Invalid parameters", __func__);
34090 WDI_ASSERT(0);
34091 return WDI_STATUS_E_FAILURE;
34092 }
34093
34094 wdiEXTScanResetBSSIDHotlistRspCb =
34095 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34096 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34097 {
34098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34099 "%s: Callback function Invalid", __func__);
34100 WDI_ASSERT(0);
34101 return WDI_STATUS_E_FAILURE;
34102 }
34103
34104 wdiEXTScanResetBSSIDHotlistRspCb(
34105 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34106
34107 return WDI_STATUS_SUCCESS;
34108}
34109
34110/**
34111 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
34112 when a response is being received over the bus from HAL)
34113
34114 @param pWDICtx: pointer to the WLAN DAL context
34115 pEventData: pointer to the event information structure
34116
34117 @see
34118 @return Result of the function call
34119*/
34120WDI_Status
34121WDI_ProcessEXTScanSetSignfRSSIChangeRsp
34122(
34123 WDI_ControlBlockType* pWDICtx,
34124 WDI_EventInfoType* pEventData
34125)
34126{
34127 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
34128
34129 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34130 "%s: %d",__func__, __LINE__);
34131
34132
34133 /*-------------------------------------------------------------------------
34134 Sanity check
34135 -------------------------------------------------------------------------*/
34136 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34137 ( NULL == pEventData->pEventData))
34138 {
34139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34140 "%s: Invalid parameters", __func__);
34141 WDI_ASSERT(0);
34142 return WDI_STATUS_E_FAILURE;
34143 }
34144
34145 wdiEXTScanSetSignfRSSIChangeRspCb =
34146 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34147 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
34148 {
34149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34150 "%s: Callback function Invalid", __func__);
34151 WDI_ASSERT(0);
34152 return WDI_STATUS_E_FAILURE;
34153 }
34154
34155 wdiEXTScanSetSignfRSSIChangeRspCb(
34156 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34157
34158 return WDI_STATUS_SUCCESS;
34159}
34160
34161/**
34162 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
34163 (called when a response is being received over the bus from HAL)
34164
34165 @param pWDICtx: pointer to the WLAN DAL context
34166 pEventData: pointer to the event information structure
34167
34168 @see
34169 @return Result of the function call
34170*/
34171WDI_Status
34172WDI_ProcessEXTScanResetSignfRSSIChangeRsp
34173(
34174 WDI_ControlBlockType* pWDICtx,
34175 WDI_EventInfoType* pEventData
34176)
34177{
34178 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
34179
34180 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34181 "%s: %d Enter",__func__, __LINE__);
34182
34183
34184 /*-------------------------------------------------------------------------
34185 Sanity check
34186 -------------------------------------------------------------------------*/
34187 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34188 ( NULL == pEventData->pEventData))
34189 {
34190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34191 "%s: Invalid parameters", __func__);
34192 WDI_ASSERT(0);
34193 return WDI_STATUS_E_FAILURE;
34194 }
34195
34196 wdiEXTScanResetSignfRSSIChangeRspCb =
34197 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34198 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
34199 {
34200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34201 "%s: Callback function Invalid", __func__);
34202 WDI_ASSERT(0);
34203 return WDI_STATUS_E_FAILURE;
34204 }
34205
34206 wdiEXTScanResetSignfRSSIChangeRspCb(
34207 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34208
34209 return WDI_STATUS_SUCCESS;
34210}
34211#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034212
34213/**
34214 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34215
34216 @param None
34217
34218 @see
34219
34220 @return Status of the request
34221*/
34222WDI_Status
34223WDI_SetSpoofMacAddrReq
34224(
34225 WDI_SpoofMacAddrInfoType* pWdiReq,
34226 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34227 void* pUserData)
34228{
34229 WDI_EventInfoType wdiEventData;
34230
34231 /*-------------------------------------------------------------------------
34232 Sanity Check
34233 ------------------------------------------------------------------------*/
34234 if (eWLAN_PAL_FALSE == gWDIInitialized)
34235 {
34236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34237 "WDI API call before module is initialized - Fail request!");
34238
34239 return WDI_STATUS_E_NOT_ALLOWED;
34240 }
34241
34242 /*-------------------------------------------------------------------------
34243 Fill in Event data and post to the Main FSM
34244 ------------------------------------------------------------------------*/
34245 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34246 wdiEventData.pEventData = pWdiReq;
34247 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34248 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34249 wdiEventData.pUserData = pUserData;
34250
34251 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34252}
34253
34254/**
34255 @brief Process SpoofMacAddr Request
34256
34257 @param pWDICtx: pointer to the WLAN DAL context
34258 pEventData: pointer to the event information structure
34259
34260 @see
34261 @return Result of the function call
34262*/
34263WDI_Status
34264WDI_ProcessSpoofMacAddrReq
34265(
34266 WDI_ControlBlockType* pWDICtx,
34267 WDI_EventInfoType* pEventData
34268)
34269{
34270 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34271 wpt_uint8* pSendBuffer = NULL;
34272 wpt_uint16 usDataOffset = 0;
34273 wpt_uint16 usSendSize = 0;
34274 WDI_Status wdiStatus;
34275 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34276 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34277
34278
34279 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34280 "%s: %d Enter",__func__, __LINE__);
34281
34282 /*-------------------------------------------------------------------------
34283 Sanity check
34284 -------------------------------------------------------------------------*/
34285 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34286 ( NULL == pEventData->pEventData))
34287 {
34288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34289 "%s: Invalid parameters", __func__);
34290 WDI_ASSERT(0);
34291 return WDI_STATUS_E_FAILURE;
34292 }
34293 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34294
34295 /*-----------------------------------------------------------------------
34296 Get message buffer
34297 -----------------------------------------------------------------------*/
34298 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34299 WDI_SPOOF_MAC_ADDR_REQ,
34300 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34301 &pSendBuffer, &usDataOffset, &usSendSize))||
34302 (usSendSize < (usDataOffset +
34303 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34304 {
34305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34306 "Unable to get send buffer in Process Spoof Mac Addr Req");
34307 WDI_ASSERT(0);
34308 return WDI_STATUS_E_FAILURE;
34309 }
34310
34311 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34312 wdiSpoofMacAddr->macAddr,
34313 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34314
34315 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34316
34317 wpalMemoryCopy( pSendBuffer+usDataOffset,
34318 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34319 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34320
34321 /*-------------------------------------------------------------------------
34322 Send Suspend Request to HAL
34323 -------------------------------------------------------------------------*/
34324 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34325 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34326
34327 return wdiStatus;
34328}
34329
34330/**
34331 @brief Process Spoof Mac Address Rsp function
34332 (called when a response is being received over the bus from HAL)
34333
34334 @param pWDICtx: pointer to the WLAN DAL context
34335 pEventData: pointer to the event information structure
34336
34337 @see
34338 @return Result of the function call
34339*/
34340WDI_Status
34341WDI_ProcessSpoofMacAddrRsp
34342(
34343 WDI_ControlBlockType* pWDICtx,
34344 WDI_EventInfoType* pEventData
34345)
34346{
34347 tMacSpoofedScanResp halRsp;
34348 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34349 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34350
34351 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34352 "%s: %d Enter",__func__, __LINE__);
34353
34354 /*-------------------------------------------------------------------------
34355 Sanity check
34356 -------------------------------------------------------------------------*/
34357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34358 ( NULL == pEventData->pEventData))
34359 {
34360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34361 "%s: Invalid parameters", __func__);
34362 WDI_ASSERT(0);
34363 return WDI_STATUS_E_FAILURE;
34364 }
34365 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34366
34367 /*-------------------------------------------------------------------------
34368 Extract response and send it to UMAC
34369 -------------------------------------------------------------------------*/
34370 wpalMemoryCopy( &halRsp,
34371 pEventData->pEventData, sizeof(halRsp));
34372
34373 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34374
34375 /*Notify UMAC*/
34376 wdiSpoofMacAddrRspCb(
34377 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34378
34379 return WDI_STATUS_SUCCESS;
34380}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034381
34382/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034383 @brief Process Get Frame Log Rsp function
34384 (called when a response is being received over the bus from HAL)
34385
34386 @param pWDICtx: pointer to the WLAN DAL context
34387 pEventData: pointer to the event information structure
34388
34389 @see
34390 @return Result of the function call
34391*/
34392WDI_Status
34393WDI_ProcessGetFrameLogRsp
34394(
34395 WDI_ControlBlockType* pWDICtx,
34396 WDI_EventInfoType* pEventData
34397)
34398{
34399 tGetFrameLogResp halRsp;
34400 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34401 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34402
34403 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34404 "%s: %d Enter",__func__, __LINE__);
34405
34406 /*-------------------------------------------------------------------------
34407 Sanity check
34408 -------------------------------------------------------------------------*/
34409 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34410 ( NULL == pEventData->pEventData))
34411 {
34412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34413 "%s: Invalid parameters", __func__);
34414 WDI_ASSERT(0);
34415 return WDI_STATUS_E_FAILURE;
34416 }
34417
34418 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34419
34420 /*-------------------------------------------------------------------------
34421 Extract response and send it to UMAC
34422 -------------------------------------------------------------------------*/
34423 wpalMemoryCopy( &halRsp,
34424 pEventData->pEventData, sizeof(halRsp));
34425
34426 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34427
34428 /*Notify UMAC*/
34429 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34430
34431 return WDI_STATUS_SUCCESS;
34432}
34433/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034434 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053034435
34436 @param pWDICtx: pointer to the WLAN DAL context
34437 pEventData: pointer to the event information structure
34438
34439 @see
34440 @return Result of the function call
34441*/
34442WDI_Status
34443WDI_ProcessGetFrameLogReq
34444(
34445 WDI_ControlBlockType* pWDICtx,
34446 WDI_EventInfoType* pEventData
34447)
34448{
34449 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
34450 wpt_uint8* pSendBuffer = NULL;
34451 wpt_uint16 usDataOffset = 0;
34452 wpt_uint16 usSendSize = 0;
34453 WDI_Status wdiStatus;
34454 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034455 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053034456
34457
34458 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34459 "%s: %d Enter",__func__, __LINE__);
34460
34461 /*-------------------------------------------------------------------------
34462 Sanity check
34463 ------------------------------------------------------------------------*/
34464 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34465 ( NULL == pEventData->pEventData))
34466 {
34467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34468 "%s: Invalid parameters", __func__);
34469 WDI_ASSERT(0);
34470 return WDI_STATUS_E_FAILURE;
34471 }
34472
34473 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
34474
34475 /*-----------------------------------------------------------------------
34476 Get message buffer
34477 -----------------------------------------------------------------------*/
34478 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34479 WDI_GET_FRAME_LOG_REQ,
34480 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
34481 &pSendBuffer, &usDataOffset, &usSendSize))||
34482 (usSendSize < (usDataOffset +
34483 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
34484 {
34485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34486 "Unable to get send buffer in GetFrameLog Req");
34487 WDI_ASSERT(0);
34488 return WDI_STATUS_E_FAILURE;
34489 }
34490
34491 halGetFrameLogReq.tGetFrameLogReqParams.flags =
34492 wdiGetFrameLogReq->flags;
34493
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034494 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053034495
34496 wpalMemoryCopy( pSendBuffer+usDataOffset,
34497 &halGetFrameLogReq.tGetFrameLogReqParams,
34498 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34499
34500 /*-------------------------------------------------------------------------
34501 Send Suspend Request to HAL
34502 ------------------------------------------------------------------------*/
34503 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34504 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34505
34506 return wdiStatus;
34507}
34508/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034509 @brief Process MgmtFrame Logging Init Rsp function
34510 (called when a response is being received over the bus from HAL)
34511
34512 @param pWDICtx: pointer to the WLAN DAL context
34513 pEventData: pointer to the event information structure
34514
34515 @see
34516 @return Result of the function call
34517*/
34518WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034519WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034520(
34521 WDI_ControlBlockType* pWDICtx,
34522 WDI_EventInfoType* pEventData
34523)
34524{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034525 tFWLoggingInitResp halRsp;
34526 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
34527 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034528
34529 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34530 "%s: %d Enter",__func__, __LINE__);
34531
34532 /*-------------------------------------------------------------------------
34533 Sanity check
34534 -------------------------------------------------------------------------*/
34535 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34536 ( NULL == pEventData->pEventData))
34537 {
34538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34539 "%s: Invalid parameters", __func__);
34540 WDI_ASSERT(0);
34541 return WDI_STATUS_E_FAILURE;
34542 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034543 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034544
34545 /*-------------------------------------------------------------------------
34546 Extract response and send it to UMAC
34547 -------------------------------------------------------------------------*/
34548 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34549
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034550 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034551
34552 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034553 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034554
34555 return WDI_STATUS_SUCCESS;
34556}
34557
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034558WDI_Status
34559WDI_ProcessFWLoggingDXEdoneInd
34560(
34561 WDI_ControlBlockType* pWDICtx,
34562 WDI_EventInfoType* pEventData
34563)
34564{
34565 wpt_uint8* pSendBuffer = NULL;
34566 wpt_uint16 usDataOffset = 0;
34567 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034568 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053034569 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034570 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34571
34572
34573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34574
34575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34576 "%s", __func__);
34577
34578 /*-------------------------------------------------------------------------
34579 Sanity check
34580 -------------------------------------------------------------------------*/
Mihir Shete5affadc2015-05-29 20:54:57 +053034581 if (NULL == pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034582 {
34583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34584 "%s: Invalid parameters", __func__);
34585 WDI_ASSERT(0);
34586 return WDI_STATUS_E_FAILURE;
34587 }
Mihir Shete5affadc2015-05-29 20:54:57 +053034588 pLoggingSession = (WDI_DS_LoggingSessionType *)
34589 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
34590 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034591 /*-----------------------------------------------------------------------
34592 Get message buffer
34593 -----------------------------------------------------------------------*/
34594
34595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34596 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053034597 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034598 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053034599 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034600 {
34601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34602 "Unable to get send buffer in RTS CTS ind %p ",
34603 pEventData);
34604 WDI_ASSERT(0);
34605 return WDI_STATUS_E_FAILURE;
34606 }
34607 FWLoggingDxeDoneIndParams =
34608 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
34609
34610 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053034611 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034612 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053034613
34614 FWLoggingDxeDoneIndParams->status = eHAL_STATUS_SUCCESS;
34615
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034616 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053034617 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034618 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
34619
34620 pWDICtx->pReqStatusUserData = NULL;
34621 pWDICtx->pfncRspCB = NULL;
34622 /*-------------------------------------------------------------------------
34623 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
34624 -------------------------------------------------------------------------*/
34625 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34626 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34627}
34628
Sachin Ahuja715aafc2015-07-21 23:35:10 +053034629
34630/**
34631 @brief Process Fatal Event Logs Rsp function
34632 (called when a response is being received over the bus from HAL)
34633
34634 @param pWDICtx: pointer to the WLAN DAL context
34635 pEventData: pointer to the event information structure
34636
34637 @see
34638 @return Result of the function call
34639*/
34640WDI_Status
34641WDI_ProcessFatalEventLogsRsp
34642(
34643 WDI_ControlBlockType* pWDICtx,
34644 WDI_EventInfoType* pEventData
34645)
34646{
34647 tHalFatalEventLoggingRspParams halRsp;
34648 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
34649 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
34650
34651 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34652 "%s: %d Enter",__func__, __LINE__);
34653
34654 /*-------------------------------------------------------------------------
34655 Sanity check
34656 -------------------------------------------------------------------------*/
34657 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34658 ( NULL == pEventData->pEventData))
34659 {
34660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34661 "%s: Invalid parameters", __func__);
34662 WDI_ASSERT(0);
34663 return WDI_STATUS_E_FAILURE;
34664 }
34665 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
34666
34667 /*-------------------------------------------------------------------------
34668 Extract response and send it to UMAC
34669 -------------------------------------------------------------------------*/
34670 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34671
34672 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34673
34674 /*Notify UMAC*/
34675 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
34676 pWDICtx->pRspCBUserData);
34677
34678 return WDI_STATUS_SUCCESS;
34679}
34680
34681/**
34682 @brief Process FatalEventLogs Request
34683
34684 @param pWDICtx: pointer to the WLAN DAL context
34685 pEventData: pointer to the event information structure
34686
34687 @see
34688 @return Result of the function call
34689*/
34690
34691WDI_Status
34692WDI_ProcessFatalEventLogsReq
34693
34694(
34695 WDI_ControlBlockType* pWDICtx,
34696 WDI_EventInfoType* pEventData
34697)
34698{
34699 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
34700 wpt_uint8* pSendBuffer = NULL;
34701 wpt_uint16 usDataOffset = 0;
34702 wpt_uint16 usSendSize = 0;
34703 WDI_Status wdiStatus;
34704 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
34705 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
34706
34707
34708 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34709 "%s: %d Enter",__func__, __LINE__);
34710
34711 /*-------------------------------------------------------------------------
34712 Sanity check
34713 ------------------------------------------------------------------------*/
34714 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34715 ( NULL == pEventData->pEventData))
34716 {
34717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34718 "%s: Invalid parameters", __func__);
34719 WDI_ASSERT(0);
34720 return WDI_STATUS_E_FAILURE;
34721 }
34722 wdiFatalEventLogsReq =
34723 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
34724
34725 /*-----------------------------------------------------------------------
34726 Get message buffer
34727 -----------------------------------------------------------------------*/
34728 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34729 WDI_FATAL_EVENT_LOGGING_REQ,
34730 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
34731 &pSendBuffer, &usDataOffset, &usSendSize))||
34732 (usSendSize < (usDataOffset +
34733 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
34734 {
34735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34736 "Unable to get send buffer in Fatal Event Req");
34737 WDI_ASSERT(0);
34738 return WDI_STATUS_E_FAILURE;
34739 }
34740 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
34741 wdiFatalEventLogsReq->reason_code;
34742
34743 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
34744
34745 wpalMemoryCopy( pSendBuffer+usDataOffset,
34746 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
34747 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
34748
34749 /*-------------------------------------------------------------------------
34750 Send Mgmt Logging Init Request to HAL
34751 ------------------------------------------------------------------------*/
34752 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34753 wdiFatalEventLogsRspCb, pEventData->pUserData,
34754 WDI_FATAL_EVENT_LOGGING_RSP);
34755
34756 return wdiStatus;
34757
34758
34759}
34760
34761
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034762/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034763 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034764
34765 @param pWDICtx: pointer to the WLAN DAL context
34766 pEventData: pointer to the event information structure
34767
34768 @see
34769 @return Result of the function call
34770*/
34771WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034772WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034773(
34774 WDI_ControlBlockType* pWDICtx,
34775 WDI_EventInfoType* pEventData
34776)
34777{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034778 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034779 wpt_uint8* pSendBuffer = NULL;
34780 wpt_uint16 usDataOffset = 0;
34781 wpt_uint16 usSendSize = 0;
34782 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034783 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
34784 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034785
34786
34787 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34788 "%s: %d Enter",__func__, __LINE__);
34789
34790 /*-------------------------------------------------------------------------
34791 Sanity check
34792 ------------------------------------------------------------------------*/
34793 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34794 ( NULL == pEventData->pEventData))
34795 {
34796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34797 "%s: Invalid parameters", __func__);
34798 WDI_ASSERT(0);
34799 return WDI_STATUS_E_FAILURE;
34800 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034801 wdiFWLoggingInitReq =
34802 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034803
34804 /*-----------------------------------------------------------------------
34805 Get message buffer
34806 -----------------------------------------------------------------------*/
34807 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034808 WDI_FW_LOGGING_INIT_REQ,
34809 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034810 &pSendBuffer, &usDataOffset, &usSendSize))||
34811 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034812 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034813 {
34814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34815 "Unable to get send buffer in Process Mgmt Logging Init Req");
34816 WDI_ASSERT(0);
34817 return WDI_STATUS_E_FAILURE;
34818 }
34819
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034820 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
34821 wdiFWLoggingInitReq->enableFlag;
34822 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
34823 wdiFWLoggingInitReq->frameSize;
34824 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
34825 wdiFWLoggingInitReq->frameType;
34826 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
34827 wdiFWLoggingInitReq->bufferMode;
34828 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
34829 wdiFWLoggingInitReq->continuousFrameLogging;
34830 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
34831 wdiFWLoggingInitReq->minLogBufferSize;
34832 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
34833 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053034834 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
34835 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
34836 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
34837 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034838
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034839 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034840
34841 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034842 &halFWLoggingInitReq.tFWLoggingInitReqParams,
34843 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034844
34845 /*-------------------------------------------------------------------------
34846 Send Mgmt Logging Init Request to HAL
34847 ------------------------------------------------------------------------*/
34848 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034849 wdiFWLoggingInitRspCb, pEventData->pUserData,
34850 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034851
34852 return wdiStatus;
34853}
34854
34855/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034856 @brief WDI_EncryptMsgReq
34857
34858 @param pwdiEncryptMsgParams: Req parameter for the FW
34859 wdiEncryptMsgCbRsp: callback for passing back the response
34860 of the Req operation received from the device
34861 pUserData: user data will be passed back with the callback
34862
34863 @return SUCCESS or FAIL
34864*/
34865WDI_Status
34866WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34867 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34868 void* pUserData)
34869{
34870 WDI_EventInfoType wdiEventData;
34871
34872 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34873 "%s: %d Enter" ,__func__, __LINE__);
34874 /*------------------------------------------------------------------------
34875 Sanity Check
34876 ------------------------------------------------------------------------*/
34877 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34878 {
34879 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34880 "WDI API call before module is initialized - Fail request");
34881
34882 return WDI_STATUS_E_NOT_ALLOWED;
34883 }
34884
34885 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34886 wdiEventData.pEventData = pwdiEncryptMsgParams;
34887 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34888 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34889 wdiEventData.pUserData = pUserData;
34890
34891 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34892}
34893
34894/*
34895 * FUNCTION: WDI_ProcessEncryptMsgReq
34896 * Request to WDI to encrypt the given message.
34897 *
34898 * @param pWDICtx: pointer to the WLAN DAL context
34899 * pEventData: pointer to the event information structure
34900 *
34901 * @return Result of the function call
34902 */
34903
34904WDI_Status
34905WDI_ProcessEncryptMsgReq
34906(
34907 WDI_ControlBlockType* pWDICtx,
34908 WDI_EventInfoType* pEventData
34909)
34910{
34911 wpt_uint8* pSendBuffer = NULL;
34912 wpt_uint16 usDataOffset = 0;
34913 wpt_uint16 usSendSize = 0;
34914 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34915 tSetEncryptedDataParams *pHalEncryptDataReq;
34916 wpt_pkt80211 *pkt = NULL;
34917
34918 /*-------------------------------------------------------------------------
34919 Sanity check
34920 -------------------------------------------------------------------------*/
34921 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34922 ( NULL == pEventData->pCBfnc ) )
34923 {
34924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34925 "%s: Invalid parameters", __func__);
34926 WDI_ASSERT(0);
34927 return WDI_STATUS_E_FAILURE;
34928 }
34929
34930 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34931
34932 /*-----------------------------------------------------------------------
34933 Get message buffer
34934 -----------------------------------------------------------------------*/
34935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34936 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34937 sizeof(tSetEncryptedDataReqMsg),
34938 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34939 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34940 {
34941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34942 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34943 pEventData);
34944 WDI_ASSERT(0);
34945 return WDI_STATUS_E_FAILURE;
34946 }
34947
34948 pWDICtx->wdiReqStatusCB = NULL;
34949 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34950 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34951
34952 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34953 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34954
34955 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34956
34957 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34958 pkt->encParams.keyParams.key[0].keyId;
34959
34960 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34961 &pkt->encParams.keyParams.key[0].key[0], 16);
34962
34963 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34964
34965 pHalEncryptDataReq->data.length = pkt->data.length;
34966 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34967
34968 /*-------------------------------------------------------------------------
34969 Send Get STA Request to HAL
34970 -------------------------------------------------------------------------*/
34971 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34972 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34973}
34974
34975/*
34976 * FUNCTION: WDI_ProcessEncryptMsgRsp
34977 * Receives the encrypted message from the firmware
34978 * @param pWDICtx: pointer to the WLAN DAL context
34979 * pEventData: pointer to the event information structure
34980 *
34981 * @return Result of the function call
34982 */
34983WDI_Status
34984WDI_ProcessEncryptMsgRsp
34985(
34986 WDI_ControlBlockType* pWDICtx,
34987 WDI_EventInfoType* pEventData
34988)
34989{
34990 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
34991 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
34992
34993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34994 "In %s",__func__);
34995
34996 /*-------------------------------------------------------------------------
34997 Sanity check
34998 -------------------------------------------------------------------------*/
34999 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35000 ( NULL == pEventData->pEventData))
35001 {
35002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35003 "%s: Invalid parameters", __func__);
35004 WDI_ASSERT(0);
35005 return WDI_STATUS_E_FAILURE;
35006 }
35007
35008 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35009
35010 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35011
35012 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35013 pEventData->pEventData,
35014 pWDICtx->pRspCBUserData);
35015 return WDI_STATUS_SUCCESS;
35016}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035017
35018WDI_Status
35019WDI_NanRequest
35020(
35021 WDI_NanRequestType *pwdiNanRequest,
35022 void *usrData
35023)
35024{
35025 WDI_EventInfoType wdiEventData;
35026
35027 /*------------------------------------------------------------------------
35028 Sanity Check
35029 ------------------------------------------------------------------------*/
35030 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35031 {
35032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35033 "WDI API call before module is initialized - Fail request");
35034
35035 return WDI_STATUS_E_NOT_ALLOWED;
35036 }
35037
35038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35039 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35040 pwdiNanRequest->request_data_len);
35041
35042 /*------------------------------------------------------------------------
35043 Fill in Event data and post to the Main FSM
35044 ------------------------------------------------------------------------*/
35045 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35046 wdiEventData.pEventData = pwdiNanRequest;
35047 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35048 + pwdiNanRequest->request_data_len;
35049 wdiEventData.pUserData = usrData;
35050 wdiEventData.pCBfnc = NULL;
35051
35052
35053 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35054}
35055
35056WDI_Status
35057WDI_ProcessNanRequest
35058(
35059 WDI_ControlBlockType* pWDICtx,
35060 WDI_EventInfoType* pEventData
35061)
35062{
35063 WDI_NanRequestType *pwdiNanRequest = NULL;
35064 wpt_uint8* pSendBuffer = NULL;
35065 wpt_uint16 usDataOffset = 0;
35066 wpt_uint16 usSendSize = 0;
35067
35068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35069 "WDI_ProcessNanRequest");
35070
35071 /*-------------------------------------------------------------------------
35072 Sanity check
35073 -------------------------------------------------------------------------*/
35074 if (( NULL == pEventData ) ||
35075 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35076 {
35077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35078 "%s: Invalid parameters", __FUNCTION__);
35079 WDI_ASSERT(0);
35080 return WDI_STATUS_E_FAILURE;
35081 }
35082
35083 /*-----------------------------------------------------------------------
35084 Get message buffer
35085 -----------------------------------------------------------------------*/
35086 if (( WDI_STATUS_SUCCESS
35087 != WDI_GetMessageBuffer( pWDICtx,
35088 WDI_NAN_REQUEST,
35089 pwdiNanRequest->request_data_len,
35090 &pSendBuffer,
35091 &usDataOffset,
35092 &usSendSize))||
35093 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35094 {
35095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35096 "Unable to get send buffer in NAN request %p %p",
35097 pEventData, pwdiNanRequest);
35098 WDI_ASSERT(0);
35099 return WDI_STATUS_E_FAILURE;
35100 }
35101
35102 wpalMemoryCopy( pSendBuffer+usDataOffset,
35103 pwdiNanRequest->request_data,
35104 pwdiNanRequest->request_data_len);
35105
35106 pWDICtx->pReqStatusUserData = NULL;
35107 pWDICtx->pfncRspCB = NULL;
35108 vos_mem_free( pEventData->pUserData);
35109
35110 /*-------------------------------------------------------------------------
35111 Send NAN Request to HAL
35112 -------------------------------------------------------------------------*/
35113 return WDI_SendMsg( pWDICtx,
35114 pSendBuffer,
35115 usSendSize,
35116 NULL,
35117 NULL,
35118 WDI_NAN_RESPONSE);
35119}
35120
35121/**
35122 @brief Process NAN Response function (called when a
35123 response is being received over the bus from HAL)
35124
35125 @param pWDICtx: pointer to the WLAN DAL context
35126 pEventData: pointer to the event information structure
35127
35128 @see
35129 @return Result of the function call
35130*/
35131WDI_Status
35132WDI_ProcessNanResponse
35133(
35134 WDI_ControlBlockType* pWDICtx,
35135 WDI_EventInfoType* pEventData
35136)
35137{
35138 WDI_Status wdiStatus;
35139 eHalStatus halStatus;
35140
35141 /*-------------------------------------------------------------------------
35142 Sanity check
35143 -------------------------------------------------------------------------*/
35144 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35145 ( NULL == pEventData->pEventData))
35146 {
35147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35148 "%s: Invalid parameters", __func__);
35149 WDI_ASSERT(0);
35150 return WDI_STATUS_E_FAILURE;
35151 }
35152
35153 halStatus = *((eHalStatus*)pEventData->pEventData);
35154 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
35155
35156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35157 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
35158
35159 return WDI_STATUS_SUCCESS;
35160}/*WDI_ProcessNanResponse*/
35161
35162
35163/**
35164 @brief Process NAN Event function (called when
35165 an indication is being received over the
35166 bus from HAL)
35167
35168 @param pWDICtx: pointer to the WLAN DAL context
35169 pEventData: pointer to the event information structure
35170
35171 @see
35172 @return Result of the function call
35173*/
35174WDI_Status
35175WDI_ProcessNanEvent
35176(
35177 WDI_ControlBlockType* pWDICtx,
35178 WDI_EventInfoType* pEventData
35179)
35180{
35181 WDI_LowLevelIndType wdiInd;
35182
35183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35184
35185 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35186 ( NULL == pEventData->pEventData ))
35187 {
35188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35189 "%s: Invalid parameters", __func__);
35190 WDI_ASSERT( 0 );
35191 return WDI_STATUS_E_FAILURE;
35192 }
35193
35194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35195 "%s: Received NAN event", __func__);
35196 /*-------------------------------------------------------------------------
35197 Extract indication and send it to UMAC
35198 -------------------------------------------------------------------------*/
35199 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
35200 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
35201 pEventData->uEventDataSize;
35202 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
35203 pEventData->pEventData;
35204
35205 /*Notify UMAC*/
35206 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
35207
35208 return WDI_STATUS_SUCCESS;
35209}/*WDI_ProcessNanEvent*/
35210
Abhishek Singh41988ba2015-05-25 19:42:29 +053035211WDI_Status
35212WDI_ProcessSetRtsCtsHtvhtInd
35213(
35214 WDI_ControlBlockType* pWDICtx,
35215 WDI_EventInfoType* pEventData
35216)
35217{
35218 wpt_uint8* pSendBuffer = NULL;
35219 wpt_uint16 usDataOffset = 0;
35220 wpt_uint16 usSendSize = 0;
35221 wpt_uint32 *rtsCtsVal;
35222 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
35223 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35224
35225
35226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35227
35228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35229 "%s", __func__);
35230
35231 /*-------------------------------------------------------------------------
35232 Sanity check
35233 -------------------------------------------------------------------------*/
35234 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35235 {
35236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35237 "%s: Invalid parameters", __func__);
35238 WDI_ASSERT(0);
35239 return WDI_STATUS_E_FAILURE;
35240 }
35241 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
35242 /*-----------------------------------------------------------------------
35243 Get message buffer
35244 -----------------------------------------------------------------------*/
35245
35246 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35247 WDI_SET_RTS_CTS_HTVHT_IND,
35248 sizeof(tHalRtsCtsHtvhtIndParams),
35249 &pSendBuffer, &usDataOffset, &usSendSize))||
35250 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
35251 {
35252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35253 "Unable to get send buffer in RTS CTS ind %p ",
35254 pEventData);
35255 WDI_ASSERT(0);
35256 return WDI_STATUS_E_FAILURE;
35257 }
35258 rtsCtsHtvhtIndParams =
35259 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
35260 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
35261
35262 pWDICtx->pReqStatusUserData = NULL;
35263 pWDICtx->pfncRspCB = NULL;
35264 /*-------------------------------------------------------------------------
35265 Send SET_RTS_CTS_HTVHT Indication to HAL
35266 -------------------------------------------------------------------------*/
35267 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35268 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35269}
35270
35271WDI_Status
35272WDI_SetRtsCtsHTVhtInd
35273(
35274 wpt_uint32 rtsCtsVal
35275)
35276{
35277 WDI_EventInfoType wdiEventData;
35278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35279
35280 /*------------------------------------------------------------------------
35281 Sanity Check
35282 ------------------------------------------------------------------------*/
35283 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35284 {
35285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35286 "WDI API call before module is initialized - Fail request");
35287 return WDI_STATUS_E_NOT_ALLOWED;
35288 }
35289
35290 /*------------------------------------------------------------------------
35291 Fill in Event data and post to the Main FSM
35292 ------------------------------------------------------------------------*/
35293 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
35294 wdiEventData.pEventData = (void *) &rtsCtsVal;
35295 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
35296 wdiEventData.pCBfnc = NULL;
35297 wdiEventData.pUserData = NULL;
35298
35299 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35300
35301}/* WDI_SetRtsCtsHTVhtInd */