blob: 430257e1837fb552fc40e0c0d56f9b9fceb639ff [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 */
schang86c22c42013-03-13 18:41:24 -0700482 /*-------------------------------------------------------------------------
483 Indications
484 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700485 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800486 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530487 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
488 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700489#ifdef WLAN_FEATURE_11W
490 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
491#else
492 NULL,
493#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700494 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
495 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530496#ifdef FEATURE_WLAN_BATCH_SCAN
497 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
498 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
499#else
500 NULL,
501 NULL,
502#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700503 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800504
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530505 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800506 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
507
508 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530509#ifdef FEATURE_WLAN_TDLS
510 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
511#else
512 NULL,
513#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530514 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530515 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700516};
517
518
Jeff Johnsone7245742012-09-05 17:12:55 -0700519/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700520 DAL Request Processing Array - the functions in this table will only be
521 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700522 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700523 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700524WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700525{
526 /*INIT*/
527 WDI_ProcessStartRsp, /* WDI_START_RESP */
528 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
529 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
530
531 /*SCAN*/
532 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
533 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
534 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
535 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
536
537 /* ASSOCIATION*/
538 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
539 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
540 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
541 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
542 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
543
544 /* Security */
545 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
546 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
547 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
548 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
549
550 /* QoS and BA APIs */
551 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
552 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
553 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
554 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
555 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
556
557 /* Miscellaneous Control APIs */
558 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
559 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
560 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
561 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
562 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
563
564 /* BA APIs*/
565 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
566 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700567
Jeff Johnson295189b2012-06-20 16:38:30 -0700568 /* IBSS APIs*/
569 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
570 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
571
572 /*Soft AP APIs*/
573 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
574 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
575 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
576 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
577
578 /* PowerSave APIs */
579 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
580 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
581 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
582 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
583 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
584 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
585 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
586 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
587 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
588 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
589 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
590 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
591 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
592 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
593 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
594 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
595 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
596 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700597
Jeff Johnson295189b2012-06-20 16:38:30 -0700598
599 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
600
601 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
602 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
603#ifdef WLAN_FEATURE_VOWIFI_11R
604 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
605#else
606 NULL,
607#endif /* WLAN_FEATURE_VOWIFI_11R */
608 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
609 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700610#ifdef FEATURE_OEM_DATA_SUPPORT
611 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
612#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700613 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700614#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700615 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
616
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700618
Jeff Johnson295189b2012-06-20 16:38:30 -0700619 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700620
Jeff Johnsone7245742012-09-05 17:12:55 -0700621 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
622
Jeff Johnson295189b2012-06-20 16:38:30 -0700623#ifdef FEATURE_WLAN_SCAN_PNO
624 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
625 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
626 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
627#else
628 NULL,
629 NULL,
630 NULL,
631#endif // FEATURE_WLAN_SCAN_PNO
632
633 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700634 /*---------------------------------------------------------------------
635 Indications
636 ---------------------------------------------------------------------*/
637#ifdef WLAN_FEATURE_PACKET_FILTERING
638 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700639 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700640 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700641 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700642 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700643 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700644 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700645 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700646#else
647 NULL,
648 NULL,
649 NULL,
650 NULL,
651#endif // WLAN_FEATURE_PACKET_FILTERING
652
653 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
654 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
655
656 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800657#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700658 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
659#else
660 NULL,
661#endif
662
663#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700664 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
665 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700666#else
667 NULL,
668 NULL,
669#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700670 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
671 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700672#ifdef WLAN_FEATURE_11AC
673 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700674#else
675 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700676#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800677#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800678 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
679#else
680 NULL,
681#endif
schang86c22c42013-03-13 18:41:24 -0700682 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700683#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700684 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700685#else
686 NULL,
687#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530688#ifdef FEATURE_WLAN_TDLS
689 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
690#else
691 NULL,
692#endif
Leo Chang9056f462013-08-01 19:21:11 -0700693#ifdef FEATURE_WLAN_LPHB
694 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
695#else
696 NULL,
697#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530698
699#ifdef FEATURE_WLAN_BATCH_SCAN
700 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
701#else
702 NULL,
703#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800704 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530705
c_hpothu92367912014-05-01 15:18:17 +0530706 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800707
c_hpothu92367912014-05-01 15:18:17 +0530708 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
709
710 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800711
Sunil Duttbd736ed2014-05-26 21:19:41 +0530712
713#ifdef WLAN_FEATURE_LINK_LAYER_STATS
714 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
715 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
716 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
717#else
718 NULL,
719 NULL,
720 NULL,
721#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530722#ifdef WLAN_FEATURE_EXTSCAN
723 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
724 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
725 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
726 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
727 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
728 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
729 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
730 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
731#else
732 NULL,
733 NULL,
734 NULL,
735 NULL,
736 NULL,
737 NULL,
738 NULL,
739 NULL,
740#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530741 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530742
743 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530744
745 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530746 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530747 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530748
Srinivas Dasari32a79262015-02-19 13:04:49 +0530749 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
750
Katya Nigamf0511f62015-05-05 16:40:57 +0530751 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
752 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700753 /*---------------------------------------------------------------------
754 Indications
755 ---------------------------------------------------------------------*/
756 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
757 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
758 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
759 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
760 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
761 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
762
763 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
764
765 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
766
Jeff Johnson295189b2012-06-20 16:38:30 -0700767 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700768
769#ifdef FEATURE_WLAN_SCAN_PNO
770 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
771#else
772 NULL,
773#endif // FEATURE_WLAN_SCAN_PNO
774
775#ifdef WLAN_WAKEUP_EVENTS
776 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
777#else // WLAN_WAKEUP_EVENTS
778 NULL,
779#endif // WLAN_WAKEUP_EVENTS
780
781 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800782
Viral Modid86bde22012-12-10 13:09:21 -0800783 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530784#ifdef FEATURE_WLAN_TDLS
785 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
786#else
787 NULL,
788#endif
Leo Chang9056f462013-08-01 19:21:11 -0700789
790#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700791 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700792#else
793 NULL,
794#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700795
796 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700797
798 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530799
800#ifdef FEATURE_WLAN_BATCH_SCAN
801 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
802#else
803 NULL,
804#endif
805
Leo Chang0b0e45a2013-12-15 15:18:55 -0800806#ifdef FEATURE_WLAN_CH_AVOID
807 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
808#else
809 NULL,
810#endif /* FEATURE_WLAN_CH_AVOID */
811
Sunil Duttbd736ed2014-05-26 21:19:41 +0530812 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
813#ifdef WLAN_FEATURE_LINK_LAYER_STATS
814 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
815#else
816 NULL,
817#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530818#ifdef WLAN_FEATURE_EXTSCAN
819 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
820 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
821 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
822 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
823 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
824#else
825 NULL,
826 NULL,
827 NULL,
828 NULL,
829 NULL,
830#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530831#ifdef FEATURE_WLAN_TDLS
832 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
833#else
834 NULL,
835#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530836 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530837 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Jeff Johnson295189b2012-06-20 16:38:30 -0700838};
839
840
Jeff Johnsone7245742012-09-05 17:12:55 -0700841/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700842 WLAN DAL Global Control Block
843 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700844WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700845static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
846
Jeff Johnsone7245742012-09-05 17:12:55 -0700847const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700848
849/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700850WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700851void* WDI_GET_PAL_CTX( void )
852{
Jeff Johnsone7245742012-09-05 17:12:55 -0700853 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700854}/*WDI_GET_PAL_CTX*/
855
Jeff Johnsone7245742012-09-05 17:12:55 -0700856/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700857 Helper inline converters
858 ============================================================================*/
859/*Convert WDI driver type into HAL driver type*/
860WPT_STATIC WPT_INLINE WDI_Status
861WDI_HAL_2_WDI_STATUS
862(
863 eHalStatus halStatus
864);
865
866/*Convert WDI request type into HAL request type*/
867WPT_STATIC WPT_INLINE tHalHostMsgType
868WDI_2_HAL_REQ_TYPE
869(
870 WDI_RequestEnumType wdiReqType
871);
872
873/*Convert WDI response type into HAL response type*/
874WPT_STATIC WPT_INLINE WDI_ResponseEnumType
875HAL_2_WDI_RSP_TYPE
876(
877 tHalHostMsgType halMsg
878);
879
880/*Convert WDI driver type into HAL driver type*/
881WPT_STATIC WPT_INLINE tDriverType
882WDI_2_HAL_DRV_TYPE
883(
884 WDI_DriverType wdiDriverType
885);
886
887/*Convert WDI stop reason into HAL stop reason*/
888WPT_STATIC WPT_INLINE tHalStopType
889WDI_2_HAL_STOP_REASON
890(
891 WDI_StopType wdiStopType
892);
893
894/*Convert WDI scan mode type into HAL scan mode type*/
895WPT_STATIC WPT_INLINE eHalSysMode
896WDI_2_HAL_SCAN_MODE
897(
898 WDI_ScanMode wdiScanMode
899);
900
901/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700902WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700903WDI_2_HAL_SEC_CH_OFFSET
904(
905 WDI_HTSecondaryChannelOffset wdiSecChOffset
906);
907
908/*Convert WDI BSS type into HAL BSS type*/
909WPT_STATIC WPT_INLINE tSirBssType
910WDI_2_HAL_BSS_TYPE
911(
912 WDI_BssType wdiBSSType
913);
914
915/*Convert WDI NW type into HAL NW type*/
916WPT_STATIC WPT_INLINE tSirNwType
917WDI_2_HAL_NW_TYPE
918(
919 WDI_NwType wdiNWType
920);
921
922/*Convert WDI chanel bonding type into HAL cb type*/
923WPT_STATIC WPT_INLINE ePhyChanBondState
924WDI_2_HAL_CB_STATE
925(
926 WDI_PhyChanBondState wdiCbState
927);
928
929/*Convert WDI chanel bonding type into HAL cb type*/
930WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
931WDI_2_HAL_HT_OPER_MODE
932(
933 WDI_HTOperatingMode wdiHTOperMode
934);
935
936/*Convert WDI mimo PS type into HAL mimo PS type*/
937WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
938WDI_2_HAL_MIMO_PS
939(
940 WDI_HTMIMOPowerSaveState wdiHTOperMode
941);
942
943/*Convert WDI ENC type into HAL ENC type*/
944WPT_STATIC WPT_INLINE tAniEdType
945WDI_2_HAL_ENC_TYPE
946(
947 WDI_EncryptType wdiEncType
948);
949
950/*Convert WDI WEP type into HAL WEP type*/
951WPT_STATIC WPT_INLINE tAniWepType
952WDI_2_HAL_WEP_TYPE
953(
954 WDI_WepType wdiWEPType
955);
956
957/*Convert WDI Link State into HAL Link State*/
958WPT_STATIC WPT_INLINE tSirLinkState
959WDI_2_HAL_LINK_STATE
960(
961 WDI_LinkStateType wdiLinkState
962);
963
Jeff Johnsone7245742012-09-05 17:12:55 -0700964/*Translate a STA Context from WDI into HAL*/
965WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700966void
967WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700968(
Jeff Johnson295189b2012-06-20 16:38:30 -0700969 tConfigStaParams* phalConfigSta,
970 WDI_ConfigStaReqInfoType* pwdiConfigSta
971);
Jeff Johnsone7245742012-09-05 17:12:55 -0700972
973/*Translate a Rate set info from WDI into HAL*/
974WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700975WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700976(
Jeff Johnson295189b2012-06-20 16:38:30 -0700977 tSirMacRateSet* pHalRateSet,
978 WDI_RateSet* pwdiRateSet
979);
980
981/*Translate an EDCA Parameter Record from WDI into HAL*/
982WPT_STATIC WPT_INLINE void
983WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700984(
Jeff Johnson295189b2012-06-20 16:38:30 -0700985 tSirMacEdcaParamRecord* phalEdcaParam,
986 WDI_EdcaParamRecord* pWDIEdcaParam
987);
988
989/*Copy a management frame header from WDI fmt into HAL fmt*/
990WPT_STATIC WPT_INLINE void
991WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
992(
993 tSirMacMgmtHdr* pmacMgmtHdr,
994 WDI_MacMgmtHdr* pwdiMacMgmtHdr
995);
996
997/*Copy config bss parameters from WDI fmt into HAL fmt*/
998WPT_STATIC WPT_INLINE void
999WDI_CopyWDIConfigBSSToHALConfigBSS
1000(
1001 tConfigBssParams* phalConfigBSS,
1002 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1003);
1004
Jeff Johnsone7245742012-09-05 17:12:55 -07001005/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001006 pointed to by user data */
1007WPT_STATIC WPT_INLINE void
1008WDI_ExtractRequestCBFromEvent
1009(
1010 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001011 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001012 void** ppUserData
1013);
1014
1015wpt_uint8
1016WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001017(
Jeff Johnson295189b2012-06-20 16:38:30 -07001018 WDI_ControlBlockType* pWDICtx,
1019 WDI_BSSSessionType** ppSession
1020);
1021
1022void
1023WDI_AddBcastSTAtoSTATable
1024(
1025 WDI_ControlBlockType* pWDICtx,
1026 WDI_AddStaParams * staParams,
1027 wpt_uint16 usBcastStaIdx
1028);
1029
1030WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001031(
Jeff Johnson295189b2012-06-20 16:38:30 -07001032 WDI_ControlBlockType* pWDICtx,
1033 WDI_EventInfoType* pEventData
1034);
1035
1036void
1037WDI_SetPowerStateCb
1038(
1039 wpt_status status,
1040 unsigned int dxePhyAddr,
1041 void *pContext
1042);
1043
Jeff Johnson295189b2012-06-20 16:38:30 -07001044/**
1045 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001046
1047 @param wdiReqMsgId: WDI Message request Id
1048
1049 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001050 @return Result of the function call
1051*/
1052static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1053{
1054 switch (wdiReqMsgId)
1055 {
1056 CASE_RETURN_STRING( WDI_START_REQ );
1057 CASE_RETURN_STRING( WDI_STOP_REQ );
1058 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1059 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1060 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1061 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1062 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1063 CASE_RETURN_STRING( WDI_JOIN_REQ );
1064 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1065 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1066 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1067 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1068 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1069 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1070 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1071 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1072 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1073 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1074 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1075 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1076 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1077 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001078 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001079 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1080 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1081 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1082 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1083 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1084 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1085 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1086 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1087 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1088 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1089 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1090 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001091 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001092 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301093#ifdef FEATURE_WLAN_TDLS
1094 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301095 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301096#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001097 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1098 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1099 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1100 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1101 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1102 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1103 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1104 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1105 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1106 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1107 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1108 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1109 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1110 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1111 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1112 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1113 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1114 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1115 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1116 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1117 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1118 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1119 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1120 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1121 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001122 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001123 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1124 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1125 #ifdef FEATURE_WLAN_SCAN_PNO
1126 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1127 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1128 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1129 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001130#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001131 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001132#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001133 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1134 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1135 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1136 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1137 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1138 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1139 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1140 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1141 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301142 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001143 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001144 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001145#ifdef WLAN_FEATURE_11W
1146 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1147#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301148#ifdef FEATURE_WLAN_BATCH_SCAN
1149 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1150 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1151 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1152#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301153 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1154 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001155 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301156#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1157 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1158 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1159 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1160#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301161#ifdef WLAN_FEATURE_EXTSCAN
1162 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1163 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1164 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1165 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1166 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1167 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1168 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1169 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1170#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301171 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301172 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301173 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301174 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301175 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301176 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301177 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301178 CASE_RETURN_STRING( WDI_MON_START_REQ );
1179 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001180 default:
1181 return "Unknown WDI MessageId";
1182 }
1183}
1184
1185
1186
1187/**
1188 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001189
1190 @param wdiRespMsgId: WDI Message response Id
1191
1192 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001193 @return Result of the function call
1194*/
1195static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1196{
1197 switch (wdiRespMsgId)
1198 {
1199 CASE_RETURN_STRING( WDI_START_RESP );
1200 CASE_RETURN_STRING( WDI_STOP_RESP );
1201 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1202 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1203 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1204 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1205 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1206 CASE_RETURN_STRING( WDI_JOIN_RESP );
1207 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1208 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1209 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1210 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1211 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1212 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1213 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1214 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1215 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1216 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1217 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1218 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1219 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1220 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1221 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1222 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1223 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1224 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1225 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1226 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1227 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1228 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1229 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1230 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1231 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1232 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1233 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301234#ifdef FEATURE_WLAN_TDLS
1235 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301236 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301237 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1238#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001239 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1240 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1241 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1242 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1243 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1244 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1245 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1246 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1247 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1248 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1249 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1250 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1251 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1252 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1253 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1254 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1255 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1256 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1257 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1258 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1259 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1260 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1261 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1262 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1263 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001264 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001265 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1266 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1267 #ifdef FEATURE_WLAN_SCAN_PNO
1268 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1269 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1270 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1271 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001272#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001273 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001274#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001275 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1276 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1277 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1278 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1279 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1280 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1281 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1282 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001283 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301284#ifdef FEATURE_WLAN_BATCH_SCAN
1285 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1286#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001287 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301288 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301289 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301290#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1291 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1292 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1293 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1294#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301295#ifdef WLAN_FEATURE_EXTSCAN
1296 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1297 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1298 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1299 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1300 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1301 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1302 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1303 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1304 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1305 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1306 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1307 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1308 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1309
1310#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301311 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301312 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301313 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301314 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001315 default:
1316 return "Unknown WDI MessageId";
1317 }
1318}
1319
1320/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301321 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1322 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301323 @param capabilityBitmap - Base address of a 4 element Bitmap array
1324 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301325 @see
1326 @returns None
1327 */
1328void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1329{
Abhishek Singh08b60122014-02-04 18:05:23 +05301330 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301331 char *pTempCapStr = NULL;
1332 char *pCapStr = NULL;
1333 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1334 if (NULL == pTempCapStr)
1335 {
1336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1337 "Memory allocation failed for CapStr");
1338 return;
1339 }
1340
1341 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301342 for (j = 0; j < 4; j++) {
1343 for (i = 0; i < 32; i++) {
1344 if ((*(capabilityBitmap + j) & (1 << i))) {
1345 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301346 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1347 pCapStr += strlen("MCC");
1348 break;
1349 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1350 pCapStr += strlen("P2P");
1351 break;
1352 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1353 pCapStr += strlen("DOT11AC");
1354 break;
1355 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1356 pCapStr += strlen("SLM_SESSIONIZATION");
1357 break;
1358 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1359 pCapStr += strlen("DOT11AC_OPMODE");
1360 break;
1361 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1362 pCapStr += strlen("SAP32STA");
1363 break;
1364 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1365 pCapStr += strlen("TDLS");
1366 break;
1367 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1368 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1369 break;
1370 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1371 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1372 break;
1373 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1374 pCapStr += strlen("BEACON_OFFLOAD");
1375 break;
1376 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1377 pCapStr += strlen("SCAN_OFFLOAD");
1378 break;
1379 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1380 pCapStr += strlen("ROAM_OFFLOAD");
1381 break;
1382 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1383 pCapStr += strlen("BCN_MISS_OFFLOAD");
1384 break;
1385 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1386 pCapStr += strlen("STA_POWERSAVE");
1387 break;
1388 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1389 pCapStr += strlen("AP_UAPSD");
1390 break;
1391 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1392 pCapStr += strlen("AP_DFS");
1393 break;
1394 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1395 pCapStr += strlen("BLOCKACK");
1396 break;
1397 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1398 pCapStr += strlen("PHY_ERR");
1399 break;
1400 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1401 pCapStr += strlen("BCN_FILTER");
1402 break;
1403 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1404 pCapStr += strlen("RTT");
1405 break;
1406 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1407 pCapStr += strlen("RATECTRL");
1408 break;
1409 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1410 pCapStr += strlen("WOW");
1411 break;
1412 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1413 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1414 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301415 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1416 pCapStr += strlen("FW_IN_TX_PATH");
1417 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301418 case HT40_OBSS_SCAN:
1419 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1420 "%s", "HT40_OBSS_SCAN");
1421 pCapStr += strlen("HT40_OBSS_SCAN");
1422 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301423 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1424 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1425 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1426 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1427 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301428 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1429 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1430 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301431 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1432 pCapStr += strlen("CH_SWITCH_V1");
1433 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301434#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1435 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1436 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1437 break;
1438#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301439#ifdef WLAN_FEATURE_EXTSCAN
1440 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1441 pCapStr += strlen("EXTENDED_SCAN");
1442 break;
1443#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301444 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1445 pCapStr += strlen("MU_MIMO");
1446 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301447
Mihir Shetec34258c2014-07-30 17:50:27 +05301448 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1449 pCapStr += strlen("DYNAMIC_WMM_PS");
1450 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301451 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1452 pCapStr += strlen("FW_STATS");
1453 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301454 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1455 pCapStr += strlen("MAC_SPOOFED_SCAN");
1456 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301457 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1458 pCapStr += strlen("WPS_PRBRSP_TMPL");
1459 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301460 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1461 pCapStr += strlen("BCN_IE_FLT_DELTA");
1462 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301463 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1464 pCapStr += strlen("MGMT_FRAME_LOGGING");
1465 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301466 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1467 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1468 break;
1469
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301470 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1471 pCapStr += strlen("DISA");
1472 break;
1473
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301474 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1475 pCapStr += strlen("TDLS_OFF_CHANNEL");
1476 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301477 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1478 pCapStr += strlen("LOGGING_ENHANCEMENT");
1479 break;
1480
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301481
Abhishek Singh08b60122014-02-04 18:05:23 +05301482 }
1483 *pCapStr++ = ',';
1484 *pCapStr++ = ' ';
1485 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301486 }
1487 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301488 pCapStr -= 2;
1489 *pCapStr = '\0';
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pTempCapStr);
1491 if (pTempCapStr)
1492 {
1493 vos_mem_free(pTempCapStr);
1494 pTempCapStr = NULL;
1495 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301496}
1497
1498/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001499 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001500
1501 @param halStatusId: HAL status Id
1502
1503 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 @return Result of the function call
1505*/
1506static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1507{
1508 switch (halStatusId)
1509 {
1510 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1511 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1512 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1513 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1514 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1515 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1516 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1517 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1518 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1519 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1520 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1521 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1522 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1523 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1524 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1525 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1526 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1527 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1528 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1529 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1530 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1531 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1532 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1533 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1534 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1535 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1536 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1537 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1538 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1539 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1540 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1541 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1542 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1543 default:
1544 return "Unknown HAL status";
1545 }
1546}
1547
Jeff Johnsone7245742012-09-05 17:12:55 -07001548/*========================================================================
1549
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001551
Jeff Johnson295189b2012-06-20 16:38:30 -07001552==========================================================================*/
1553
1554/**
1555 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001556
Jeff Johnson295189b2012-06-20 16:38:30 -07001557 DAL will allocate all the resources it needs. It will open PAL, it will also
1558 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001559 DXE/SMD or any other drivers that they need.
1560
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301561 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001562 ppWDIGlobalCtx: output pointer of Global Context
1563 pWdiDevCapability: output pointer of device capability
1564
1565 @return Result of the function call
1566*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001567WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001568WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001569(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301570 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001571 void** ppWDIGlobalCtx,
1572 WDI_DeviceCapabilityType* pWdiDevCapability,
1573 unsigned int driverType
1574)
1575{
1576 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001577 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001578 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001579 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1581
1582 /*---------------------------------------------------------------------
1583 Sanity check
1584 ---------------------------------------------------------------------*/
1585 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1586 {
1587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1588 "Invalid input parameters in WDI_Init");
1589
Jeff Johnsone7245742012-09-05 17:12:55 -07001590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 }
1592
1593 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001594 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001595 ---------------------------------------------------------------------*/
1596 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1597 {
1598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1599 "WDI module already initialized - return");
1600
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 }
1603
1604 /*Module is now initialized - this flag is to ensure the fact that multiple
1605 init will not happen on WDI
1606 !! - potential race does exist because read and set are not atomic,
1607 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001608 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001609
1610 /*Setup the control block */
1611 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301612 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001613
1614 /*Setup the STA Table*/
1615 wdiStatus = WDI_STATableInit(&gWDICb);
1616 if ( WDI_STATUS_SUCCESS != wdiStatus )
1617 {
1618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1619 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001620 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001621 goto fail_STATableInit;
1622 }
1623
1624 /*------------------------------------------------------------------------
1625 Open the PAL
1626 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301627 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001628 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1629 {
1630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1631 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001632 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 goto fail_wpalOpen;
1634 }
1635
1636 /*Initialize main synchro mutex - it will be used to ensure integrity of
1637 the main WDI Control Block*/
1638 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1639 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1640 {
1641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1642 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001643 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001644 goto fail_mutex;
1645 }
1646
1647 /*Initialize the response timer - it will be used to time all messages
1648 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001649 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1650 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001651 &gWDICb);
1652 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1653 {
1654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1655 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001656 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001657 goto fail_timer;
1658 }
1659
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001660 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1661 WDI_SsrTimerCB,
1662 &gWDICb);
1663 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1664 {
1665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1666 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001667 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001668 goto fail_timer2;
1669 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001670 /* Initialize the WDI Pending Request Queue*/
1671 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1672 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1673 {
1674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1675 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001676 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001677 goto fail_pend_queue;
1678 }
1679
1680 /*Init WDI Pending Assoc Id Queue */
1681 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1682 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1683 {
1684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1685 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001686 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001687 goto fail_assoc_queue;
1688 }
1689
1690 /*Initialize the BSS sessions pending Queue */
1691 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1692 {
1693 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1694 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1695 {
1696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1697 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001698 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001699 goto fail_bss_queue;
1700 }
1701 }
1702
1703 /*Indicate the control block is sufficiently initialized for callbacks*/
1704 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1705
1706 /*------------------------------------------------------------------------
1707 Initialize the Data Path Utility Module
1708 ------------------------------------------------------------------------*/
1709 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1710 if ( WDI_STATUS_SUCCESS != wdiStatus )
1711 {
1712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1713 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001714 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001715 goto fail_dp_util_init;
1716 }
1717
1718 /* Init Set power state event */
1719 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001720 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001721 {
1722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1723 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001724 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001725 goto fail_power_event;
1726 }
1727
1728 /* Init WCTS action event */
1729 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001730 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 {
1732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1733 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001734 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001735 goto fail_wcts_event;
1736 }
1737
1738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001739 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001740 ------------------------------------------------------------------------*/
1741 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1742 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 wctsCBs.wctsRxMsgCBData = &gWDICb;
1745
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001748 WDI_CT_CHANNEL_SIZE,
1749 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001750
1751 if ( NULL == gWDICb.wctsHandle )
1752 {
1753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001754 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 goto fail_wcts_open;
1756 }
1757
1758 gWDICb.driverMode = (tDriverType)driverType;
1759 /* FTM mode not need to open Transport Driver */
1760 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001761 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 /*------------------------------------------------------------------------
1763 Open the Data Transport
1764 ------------------------------------------------------------------------*/
1765 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1766 {
1767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001768 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 goto fail_wdts_open;
1770 }
1771 }
1772
1773 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001774 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301775 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001776 /*Send the context as a ptr to the global WDI Control Block*/
1777 *ppWDIGlobalCtx = &gWDICb;
1778
1779 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001780 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001781 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1782 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1783 return WDI_STATUS_SUCCESS;
1784
1785 /* ERROR handlers
1786 Undo everything that completed successfully */
1787
1788 fail_wdts_open:
1789 {
1790 wpt_status eventStatus;
1791
1792 /* Closing WCTS in this scenario is tricky since it has to close
1793 the SMD channel and then we get notified asynchronously when
1794 the channel has been closed. So we take some of the logic from
1795 the "normal" close procedure in WDI_Close()
1796 */
1797
1798 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001799 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001800 {
1801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001802 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001803 }
1804
1805 WCTS_CloseTransport(gWDICb.wctsHandle);
1806
1807 /* Wait for WCTS to close the control transport. If we were able
1808 to reset the event flag, then we'll wait for the event,
1809 otherwise we'll wait for a maximum amount of time required for
1810 the channel to be closed */
1811 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1812 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001813 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001814 WDI_WCTS_ACTION_TIMEOUT);
1815 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1816 {
1817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001818 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001819 }
1820 }
1821 else
1822 {
1823 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1824 }
1825 }
1826 fail_wcts_open:
1827 wpalEventDelete(&gWDICb.wctsActionEvent);
1828 fail_wcts_event:
1829 wpalEventDelete(&gWDICb.setPowerStateEvent);
1830 fail_power_event:
1831 WDI_DP_UtilsExit(&gWDICb);
1832 fail_dp_util_init:
1833 gWDICb.magic = 0;
1834 fail_bss_queue:
1835 /* entries 0 thru i-1 were successfully initialized */
1836 while (0 < i)
1837 {
1838 i--;
1839 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1840 }
1841 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1842 fail_assoc_queue:
1843 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1844 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001845 wpalTimerDelete(&gWDICb.ssrTimer);
1846 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 wpalTimerDelete(&gWDICb.wptResponseTimer);
1848 fail_timer:
1849 wpalMutexDelete(&gWDICb.wptMutex);
1850 fail_mutex:
1851 wpalClose(gWDICb.pPALContext);
1852 fail_wpalOpen:
1853 WDI_STATableClose(&gWDICb);
1854 fail_STATableInit:
1855 gWDIInitialized = eWLAN_PAL_FALSE;
1856
1857 return WDI_STATUS_E_FAILURE;
1858
1859}/*WDI_Init*/;
1860
1861/**
1862 @brief WDI_Start will be called when the upper MAC is ready to
1863 commence operation with the WLAN Device. Upon the call
1864 of this API the WLAN DAL will pack and send a HAL Start
1865 message to the lower RIVA sub-system if the SMD channel
1866 has been fully opened and the RIVA subsystem is up.
1867
1868 If the RIVA sub-system is not yet up and running DAL
1869 will queue the request for Open and will wait for the
1870 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001871 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001872
1873 WDI_Init must have been called.
1874
Jeff Johnsone7245742012-09-05 17:12:55 -07001875 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001877
Jeff Johnson295189b2012-06-20 16:38:30 -07001878 wdiStartRspCb: callback for passing back the response of
1879 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001880
Jeff Johnson295189b2012-06-20 16:38:30 -07001881 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001882 callback
1883
Jeff Johnson295189b2012-06-20 16:38:30 -07001884 @see WDI_Start
1885 @return Result of the function call
1886*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001887WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001888WDI_Start
1889(
1890 WDI_StartReqParamsType* pwdiStartParams,
1891 WDI_StartRspCb wdiStartRspCb,
1892 void* pUserData
1893)
1894{
1895 WDI_EventInfoType wdiEventData;
1896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1897
1898 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001899 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001900 ------------------------------------------------------------------------*/
1901 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1902 {
1903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1904 "WDI API call before module is initialized - Fail request");
1905
Jeff Johnsone7245742012-09-05 17:12:55 -07001906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001907 }
1908
1909 /*------------------------------------------------------------------------
1910 Fill in Event data and post to the Main FSM
1911 ------------------------------------------------------------------------*/
1912 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 wdiEventData.pEventData = pwdiStartParams;
1914 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1915 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001916 wdiEventData.pUserData = pUserData;
1917
1918 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1919
1920}/*WDI_Start*/
1921
1922/**
1923 @brief WDI_Stop will be called when the upper MAC is ready to
1924 stop any operation with the WLAN Device. Upon the call
1925 of this API the WLAN DAL will pack and send a HAL Stop
1926 message to the lower RIVA sub-system if the DAL Core is
1927 in started state.
1928
1929 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001930
1931 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001932
1933 WDI_Start must have been called.
1934
Jeff Johnsone7245742012-09-05 17:12:55 -07001935 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001937
Jeff Johnson295189b2012-06-20 16:38:30 -07001938 wdiStopRspCb: callback for passing back the response of
1939 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001940
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001942 callback
1943
Jeff Johnson295189b2012-06-20 16:38:30 -07001944 @see WDI_Start
1945 @return Result of the function call
1946*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001947WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001948WDI_Stop
1949(
1950 WDI_StopReqParamsType* pwdiStopParams,
1951 WDI_StopRspCb wdiStopRspCb,
1952 void* pUserData
1953)
1954{
1955 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001956 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1958
1959 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001960 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 ------------------------------------------------------------------------*/
1962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1963 {
1964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1965 "WDI API call before module is initialized - Fail request");
1966
Jeff Johnsone7245742012-09-05 17:12:55 -07001967 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 }
1969
Jeff Johnson43971f52012-07-17 12:26:56 -07001970 /*Access to the global state must be locked before cleaning */
1971 wpalMutexAcquire(&pWDICtx->wptMutex);
1972
1973 /*Clear all pending request*/
1974 WDI_ClearPendingRequests(pWDICtx);
1975
1976 /*We have completed cleaning unlock now*/
1977 wpalMutexRelease(&pWDICtx->wptMutex);
1978
Jeff Johnson295189b2012-06-20 16:38:30 -07001979 /* Free the global variables */
1980 wpalMemoryFree(gpHostWlanFeatCaps);
1981 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001982 gpHostWlanFeatCaps = NULL;
1983 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001984
1985 /*------------------------------------------------------------------------
1986 Fill in Event data and post to the Main FSM
1987 ------------------------------------------------------------------------*/
1988 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001989 wdiEventData.pEventData = pwdiStopParams;
1990 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1991 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001992 wdiEventData.pUserData = pUserData;
1993
1994 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1995
1996}/*WDI_Stop*/
1997
1998
1999
2000/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002001 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 needs to interact with DAL. DAL will free its control
2003 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002004
2005 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002006
2007 WDI_Stop must have been called.
2008
2009 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002010
Jeff Johnson295189b2012-06-20 16:38:30 -07002011 @see WDI_Stop
2012 @return Result of the function call
2013*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002014WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002015WDI_Close
2016(
2017 void
2018)
2019{
2020 wpt_uint8 i;
2021 WDI_EventInfoType wdiEventData;
2022 wpt_status wptStatus;
2023 wpt_status eventStatus;
2024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2025
2026 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 ------------------------------------------------------------------------*/
2029 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2030 {
2031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2032 "WDI API call before module is initialized - Fail request");
2033
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 }
2036
2037 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2038 (the control transport will be closed by the FSM and we'll want
2039 to wait until that completes)*/
2040 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 {
2043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002044 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 /* fall through and try to finish closing via the FSM */
2046 }
2047
2048 /*------------------------------------------------------------------------
2049 Fill in Event data and post to the Main FSM
2050 ------------------------------------------------------------------------*/
2051 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002052 wdiEventData.pEventData = NULL;
2053 wdiEventData.uEventDataSize = 0;
2054 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002055 wdiEventData.pUserData = NULL;
2056
2057 gWDIInitialized = eWLAN_PAL_FALSE;
2058
2059 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2060
2061 /*Wait for WCTS to close the control transport
2062 (but only if we were able to reset the event flag*/
2063 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2064 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002065 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002066 WDI_WCTS_ACTION_TIMEOUT);
2067 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2068 {
2069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002070 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 }
2072 }
2073
2074 /* Destroy the WCTS action event */
2075 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2076 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2077 {
2078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2079 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002080 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002081 }
2082
2083 /* Destroy the Set Power State event */
2084 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2085 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2086 {
2087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2088 "WDI Close failed to destroy an event");
2089
Jeff Johnsone7245742012-09-05 17:12:55 -07002090 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 }
2092
2093 /*------------------------------------------------------------------------
2094 Closes the Data Path Utility Module
2095 ------------------------------------------------------------------------*/
2096 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2097 {
2098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2099 "WDI Init failed to close the DP Util Module");
2100
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 }
2103
2104 /*destroy the BSS sessions pending Queue */
2105 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2106 {
2107 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2108 }
2109
2110 /* destroy the WDI Pending Assoc Id Request Queue*/
2111 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2112
2113 /* destroy the WDI Pending Request Queue*/
2114 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002115
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 /*destroy the response timer */
2117 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2118
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002119 /*destroy the SSR timer */
2120 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2121
Jeff Johnson295189b2012-06-20 16:38:30 -07002122 /*invalidate the main synchro mutex */
2123 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2124 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2125 {
2126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2127 "Failed to delete mutex %d", wptStatus);
2128 WDI_ASSERT(0);
2129 }
2130
2131 /*Clear control block. note that this will clear the "magic"
2132 which will inhibit all asynchronous callbacks*/
2133 WDI_CleanCB(&gWDICb);
2134
2135 return wptStatus;
2136
2137}/*WDI_Close*/
2138
2139/**
2140 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2141 This will do most of the WDI stop & close
2142 operations without doing any handshake with Riva
2143
2144 This will also make sure that the control transport
2145 will NOT be closed.
2146
2147 This request will not be queued.
2148
2149
2150 WDI_Start must have been called.
2151
2152 @param closeTransport: Close control channel if this is set
2153
2154 @return Result of the function call
2155*/
2156WDI_Status
2157WDI_Shutdown
2158(
2159 wpt_boolean closeTransport
2160)
2161{
2162 WDI_EventInfoType wdiEventData;
2163 wpt_status wptStatus;
2164 int i = 0;
2165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2166
2167 /*------------------------------------------------------------------------
2168 Sanity Check
2169 ------------------------------------------------------------------------*/
2170 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2171 {
2172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2173 "WDI API call before module is initialized - Fail request");
2174
2175 return WDI_STATUS_E_NOT_ALLOWED;
2176 }
2177
2178 /*------------------------------------------------------------------------
2179 Fill in Event data and post to the Main FSM
2180 ------------------------------------------------------------------------*/
2181 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2182 wdiEventData.pEventData = NULL;
2183 wdiEventData.uEventDataSize = 0;
2184
2185 /* Shutdown will not be queued, if the state is busy timer will be
2186 * stopped & this message will be processed.*/
2187 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2188 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2189 {
2190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002191 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002192 }
2193 /* Destroy the Set Power State event */
2194 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2195 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2196 {
2197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2198 "WDI Close failed to destroy an event");
2199
2200 WDI_ASSERT(0);
2201 }
2202 /*------------------------------------------------------------------------
2203 Closes the Data Path Utility Module
2204 ------------------------------------------------------------------------*/
2205 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2206 {
2207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2208 "WDI Init failed to close the DP Util Module");
2209
2210 WDI_ASSERT(0);
2211 }
2212 if ( closeTransport )
2213 {
2214 /* Close control transport, called from module unload */
2215 WCTS_CloseTransport(gWDICb.wctsHandle);
2216 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002217 else
2218 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002219 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002220 the pending messages in the transport queue */
2221 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2222 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002223 /*destroy the BSS sessions pending Queue */
2224 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2225 {
2226 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2227 }
2228
2229 /* destroy the WDI Pending Assoc Id Request Queue*/
2230 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2231 /* destroy the WDI Pending Request Queue*/
2232 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2233 /*destroy the response timer */
2234 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002235 /*destroy the SSR timer */
2236 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002237
2238 /*invalidate the main synchro mutex */
2239 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2240 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2241 {
2242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002243 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002244 WDI_ASSERT(0);
2245 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002246 /* Free the global variables */
2247 wpalMemoryFree(gpHostWlanFeatCaps);
2248 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002249 gpHostWlanFeatCaps = NULL;
2250 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 /*Clear control block. note that this will clear the "magic"
2252 which will inhibit all asynchronous callbacks*/
2253 WDI_CleanCB(&gWDICb);
2254 return wptStatus;
2255
2256}/*WDI_Shutdown*/
2257
2258
Jeff Johnsone7245742012-09-05 17:12:55 -07002259/*========================================================================
2260
Jeff Johnson295189b2012-06-20 16:38:30 -07002261 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002262
Jeff Johnson295189b2012-06-20 16:38:30 -07002263==========================================================================*/
2264
2265/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002266 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 the WLAN Device to get ready for a scan procedure. Upon
2268 the call of this API the WLAN DAL will pack and send a
2269 HAL Init Scan request message to the lower RIVA
2270 sub-system if DAL is in state STARTED.
2271
2272 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002274
2275 WDI_Start must have been called.
2276
2277 @param wdiInitScanParams: the init scan parameters as specified
2278 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002279
Jeff Johnson295189b2012-06-20 16:38:30 -07002280 wdiInitScanRspCb: callback for passing back the response
2281 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002282
Jeff Johnson295189b2012-06-20 16:38:30 -07002283 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 callback
2285
Jeff Johnson295189b2012-06-20 16:38:30 -07002286 @see WDI_Start
2287 @return Result of the function call
2288*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002289WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002290WDI_InitScanReq
2291(
2292 WDI_InitScanReqParamsType* pwdiInitScanParams,
2293 WDI_InitScanRspCb wdiInitScanRspCb,
2294 void* pUserData
2295)
2296{
2297 WDI_EventInfoType wdiEventData;
2298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2299
2300 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002301 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 ------------------------------------------------------------------------*/
2303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2304 {
2305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2306 "WDI API call before module is initialized - Fail request");
2307
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 }
2310
2311 /*------------------------------------------------------------------------
2312 Fill in Event data and post to the Main FSM
2313 ------------------------------------------------------------------------*/
2314 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 wdiEventData.pEventData = pwdiInitScanParams;
2316 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2317 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002318 wdiEventData.pUserData = pUserData;
2319
2320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2321
2322}/*WDI_InitScanReq*/
2323
2324/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 wishes to change the Scan channel on the WLAN Device.
2327 Upon the call of this API the WLAN DAL will pack and
2328 send a HAL Start Scan request message to the lower RIVA
2329 sub-system if DAL is in state STARTED.
2330
2331 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002333
2334 WDI_InitScanReq must have been called.
2335
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002338
Jeff Johnson295189b2012-06-20 16:38:30 -07002339 wdiStartScanRspCb: callback for passing back the
2340 response of the start scan operation received from the
2341 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002342
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002344 callback
2345
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 @see WDI_InitScanReq
2347 @return Result of the function call
2348*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002349WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002350WDI_StartScanReq
2351(
2352 WDI_StartScanReqParamsType* pwdiStartScanParams,
2353 WDI_StartScanRspCb wdiStartScanRspCb,
2354 void* pUserData
2355)
2356{
2357 WDI_EventInfoType wdiEventData;
2358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2359
2360 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002361 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002362 ------------------------------------------------------------------------*/
2363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2364 {
2365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2366 "WDI API call before module is initialized - Fail request");
2367
Jeff Johnsone7245742012-09-05 17:12:55 -07002368 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002369 }
2370
2371 /*------------------------------------------------------------------------
2372 Fill in Event data and post to the Main FSM
2373 ------------------------------------------------------------------------*/
2374 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 wdiEventData.pEventData = pwdiStartScanParams;
2376 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2377 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002378 wdiEventData.pUserData = pUserData;
2379
2380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2381
2382}/*WDI_StartScanReq*/
2383
2384
2385/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002386 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 wants to end scanning for a particular channel that it
2388 had set before by calling Scan Start on the WLAN Device.
2389 Upon the call of this API the WLAN DAL will pack and
2390 send a HAL End Scan request message to the lower RIVA
2391 sub-system if DAL is in state STARTED.
2392
2393 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002395
2396 WDI_StartScanReq must have been called.
2397
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002399 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002400
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 wdiEndScanRspCb: callback for passing back the response
2402 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002403
Jeff Johnson295189b2012-06-20 16:38:30 -07002404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 callback
2406
Jeff Johnson295189b2012-06-20 16:38:30 -07002407 @see WDI_StartScanReq
2408 @return Result of the function call
2409*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002410WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002411WDI_EndScanReq
2412(
2413 WDI_EndScanReqParamsType* pwdiEndScanParams,
2414 WDI_EndScanRspCb wdiEndScanRspCb,
2415 void* pUserData
2416)
2417{
2418 WDI_EventInfoType wdiEventData;
2419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2420
2421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002423 ------------------------------------------------------------------------*/
2424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2425 {
2426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2427 "WDI API call before module is initialized - Fail request");
2428
Jeff Johnsone7245742012-09-05 17:12:55 -07002429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 }
2431
2432 /*------------------------------------------------------------------------
2433 Fill in Event data and post to the Main FSM
2434 ------------------------------------------------------------------------*/
2435 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 wdiEventData.pEventData = pwdiEndScanParams;
2437 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2438 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 wdiEventData.pUserData = pUserData;
2440
2441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2442
2443}/*WDI_EndScanReq*/
2444
2445
2446/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002448 completed the scan process on the WLAN Device. Upon the
2449 call of this API the WLAN DAL will pack and send a HAL
2450 Finish Scan Request request message to the lower RIVA
2451 sub-system if DAL is in state STARTED.
2452
2453 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002455
2456 WDI_InitScanReq must have been called.
2457
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002459 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 wdiFinishScanRspCb: callback for passing back the
2462 response of the finish scan operation received from the
2463 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002466 callback
2467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 @see WDI_InitScanReq
2469 @return Result of the function call
2470*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002472WDI_FinishScanReq
2473(
2474 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2475 WDI_FinishScanRspCb wdiFinishScanRspCb,
2476 void* pUserData
2477)
2478{
2479 WDI_EventInfoType wdiEventData;
2480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2481
2482 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002483 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 ------------------------------------------------------------------------*/
2485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2486 {
2487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2488 "WDI API call before module is initialized - Fail request");
2489
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 }
2492
2493 /*------------------------------------------------------------------------
2494 Fill in Event data and post to the Main FSM
2495 ------------------------------------------------------------------------*/
2496 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 wdiEventData.pEventData = pwdiFinishScanParams;
2498 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2499 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002500 wdiEventData.pUserData = pUserData;
2501
2502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2503
2504}/*WDI_FinishScanReq*/
2505
Jeff Johnsone7245742012-09-05 17:12:55 -07002506/*========================================================================
2507
Jeff Johnson295189b2012-06-20 16:38:30 -07002508 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002509
Jeff Johnson295189b2012-06-20 16:38:30 -07002510==========================================================================*/
2511
2512/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002513 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002514 to start an association procedure to a BSS. Upon the
2515 call of this API the WLAN DAL will pack and send a HAL
2516 Join request message to the lower RIVA sub-system if
2517 DAL is in state STARTED.
2518
2519 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002520 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002521
2522 WDI_Start must have been called.
2523
Jeff Johnsone7245742012-09-05 17:12:55 -07002524 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002526
Jeff Johnson295189b2012-06-20 16:38:30 -07002527 wdiJoinRspCb: callback for passing back the response of
2528 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002529
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 callback
2532
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 @see WDI_Start
2534 @return Result of the function call
2535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002537WDI_JoinReq
2538(
2539 WDI_JoinReqParamsType* pwdiJoinParams,
2540 WDI_JoinRspCb wdiJoinRspCb,
2541 void* pUserData
2542)
2543{
2544 WDI_EventInfoType wdiEventData;
2545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2546
2547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002549 ------------------------------------------------------------------------*/
2550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2551 {
2552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2553 "WDI API call before module is initialized - Fail request");
2554
Jeff Johnsone7245742012-09-05 17:12:55 -07002555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 }
2557
2558 /*------------------------------------------------------------------------
2559 Fill in Event data and post to the Main FSM
2560 ------------------------------------------------------------------------*/
2561 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 wdiEventData.pEventData = pwdiJoinParams;
2563 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2564 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 wdiEventData.pUserData = pUserData;
2566
2567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2568
2569}/*WDI_JoinReq*/
2570
2571/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002572 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 wishes to configure the newly acquired or in process of
2574 being acquired BSS to the HW . Upon the call of this API
2575 the WLAN DAL will pack and send a HAL Config BSS request
2576 message to the lower RIVA sub-system if DAL is in state
2577 STARTED.
2578
2579 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002581
2582 WDI_JoinReq must have been called.
2583
Jeff Johnsone7245742012-09-05 17:12:55 -07002584 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002585 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002586
Jeff Johnson295189b2012-06-20 16:38:30 -07002587 wdiConfigBSSRspCb: callback for passing back the
2588 response of the config BSS operation received from the
2589 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002592 callback
2593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 @see WDI_JoinReq
2595 @return Result of the function call
2596*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002597WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002598WDI_ConfigBSSReq
2599(
2600 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2601 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2602 void* pUserData
2603)
2604{
2605 WDI_EventInfoType wdiEventData;
2606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2607
2608 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 ------------------------------------------------------------------------*/
2611 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2612 {
2613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2614 "WDI API call before module is initialized - Fail request");
2615
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 }
2618
2619 /*------------------------------------------------------------------------
2620 Fill in Event data and post to the Main FSM
2621 ------------------------------------------------------------------------*/
2622 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 wdiEventData.pEventData = pwdiConfigBSSParams;
2624 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2625 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 wdiEventData.pUserData = pUserData;
2627
2628 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2629
2630}/*WDI_ConfigBSSReq*/
2631
2632/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 disassociating from the BSS and wishes to notify HW.
2635 Upon the call of this API the WLAN DAL will pack and
2636 send a HAL Del BSS request message to the lower RIVA
2637 sub-system if DAL is in state STARTED.
2638
2639 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002641
2642 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2643
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002646
Jeff Johnson295189b2012-06-20 16:38:30 -07002647 wdiDelBSSRspCb: callback for passing back the response
2648 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002649
Jeff Johnson295189b2012-06-20 16:38:30 -07002650 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 callback
2652
2653 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 @return Result of the function call
2655*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002656WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002657WDI_DelBSSReq
2658(
2659 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2660 WDI_DelBSSRspCb wdiDelBSSRspCb,
2661 void* pUserData
2662)
2663{
2664 WDI_EventInfoType wdiEventData;
2665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2666
2667 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002668 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002669 ------------------------------------------------------------------------*/
2670 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2671 {
2672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2673 "WDI API call before module is initialized - Fail request");
2674
Jeff Johnsone7245742012-09-05 17:12:55 -07002675 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002676 }
2677
2678 /*------------------------------------------------------------------------
2679 Fill in Event data and post to the Main FSM
2680 ------------------------------------------------------------------------*/
2681 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002682 wdiEventData.pEventData = pwdiDelBSSParams;
2683 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2684 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 wdiEventData.pUserData = pUserData;
2686
2687 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2688
2689}/*WDI_DelBSSReq*/
2690
2691/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002693 associated to a BSS and wishes to configure HW for
2694 associated state. Upon the call of this API the WLAN DAL
2695 will pack and send a HAL Post Assoc request message to
2696 the lower RIVA sub-system if DAL is in state STARTED.
2697
2698 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002700
2701 WDI_JoinReq must have been called.
2702
2703 @param wdiPostAssocReqParams: the assoc parameters as specified
2704 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002705
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 wdiPostAssocRspCb: callback for passing back the
2707 response of the post assoc operation received from the
2708 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002709
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 callback
2712
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 @see WDI_JoinReq
2714 @return Result of the function call
2715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002717WDI_PostAssocReq
2718(
2719 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2720 WDI_PostAssocRspCb wdiPostAssocRspCb,
2721 void* pUserData
2722)
2723{
2724 WDI_EventInfoType wdiEventData;
2725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2726
2727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 ------------------------------------------------------------------------*/
2730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2731 {
2732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2733 "WDI API call before module is initialized - Fail request");
2734
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 }
2737
2738 /*------------------------------------------------------------------------
2739 Fill in Event data and post to the Main FSM
2740 ------------------------------------------------------------------------*/
2741 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002742 wdiEventData.pEventData = pwdiPostAssocReqParams;
2743 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2744 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002745 wdiEventData.pUserData = pUserData;
2746
2747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2748
2749}/*WDI_PostAssocReq*/
2750
2751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002753 association with another STA has ended and the station
2754 must be deleted from HW. Upon the call of this API the
2755 WLAN DAL will pack and send a HAL Del STA request
2756 message to the lower RIVA sub-system if DAL is in state
2757 STARTED.
2758
2759 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002760 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002761
2762 WDI_PostAssocReq must have been called.
2763
Jeff Johnsone7245742012-09-05 17:12:55 -07002764 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002765 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002766
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 wdiDelSTARspCb: callback for passing back the response
2768 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002769
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002771 callback
2772
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 @see WDI_PostAssocReq
2774 @return Result of the function call
2775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002777WDI_DelSTAReq
2778(
2779 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2780 WDI_DelSTARspCb wdiDelSTARspCb,
2781 void* pUserData
2782)
2783{
2784 WDI_EventInfoType wdiEventData;
2785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2786
2787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002789 ------------------------------------------------------------------------*/
2790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2791 {
2792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2793 "WDI API call before module is initialized - Fail request");
2794
Jeff Johnsone7245742012-09-05 17:12:55 -07002795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 }
2797
2798 /*------------------------------------------------------------------------
2799 Fill in Event data and post to the Main FSM
2800 ------------------------------------------------------------------------*/
2801 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002802 wdiEventData.pEventData = pwdiDelSTAParams;
2803 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2804 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002805 wdiEventData.pUserData = pUserData;
2806
2807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2808
2809}/*WDI_DelSTAReq*/
2810
Jeff Johnsone7245742012-09-05 17:12:55 -07002811/*========================================================================
2812
Jeff Johnson295189b2012-06-20 16:38:30 -07002813 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002814
Jeff Johnson295189b2012-06-20 16:38:30 -07002815==========================================================================*/
2816
2817/**
2818 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2819 install a BSS encryption key on the HW. Upon the call of this
2820 API the WLAN DAL will pack and send a Set BSS Key request
2821 message to the lower RIVA sub-system if DAL is in state
2822 STARTED.
2823
2824 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002826
2827 WDI_PostAssocReq must have been called.
2828
Jeff Johnsone7245742012-09-05 17:12:55 -07002829 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002830 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002831
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 wdiSetBSSKeyRspCb: callback for passing back the
2833 response of the set BSS Key operation received from the
2834 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002835
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002837 callback
2838
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 @see WDI_PostAssocReq
2840 @return Result of the function call
2841*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002842WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002843WDI_SetBSSKeyReq
2844(
2845 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2846 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2847 void* pUserData
2848)
2849{
2850 WDI_EventInfoType wdiEventData;
2851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2852
2853 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002854 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002855 ------------------------------------------------------------------------*/
2856 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2857 {
2858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2859 "WDI API call before module is initialized - Fail request");
2860
Jeff Johnsone7245742012-09-05 17:12:55 -07002861 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 }
2863
2864 /*------------------------------------------------------------------------
2865 Fill in Event data and post to the Main FSM
2866 ------------------------------------------------------------------------*/
2867 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2869 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2870 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002871 wdiEventData.pUserData = pUserData;
2872
2873 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2874
2875}/*WDI_SetBSSKeyReq*/
2876
2877/**
2878 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2879 uninstall a BSS key from HW. Upon the call of this API the
2880 WLAN DAL will pack and send a HAL Remove BSS Key request
2881 message to the lower RIVA sub-system if DAL is in state
2882 STARTED.
2883
2884 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002885 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002886
2887 WDI_SetBSSKeyReq must have been called.
2888
Jeff Johnsone7245742012-09-05 17:12:55 -07002889 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002890 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002891
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 wdiRemoveBSSKeyRspCb: callback for passing back the
2893 response of the remove BSS key operation received from
2894 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002895
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002897 callback
2898
Jeff Johnson295189b2012-06-20 16:38:30 -07002899 @see WDI_SetBSSKeyReq
2900 @return Result of the function call
2901*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002902WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002903WDI_RemoveBSSKeyReq
2904(
2905 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2906 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2907 void* pUserData
2908)
2909{
2910 WDI_EventInfoType wdiEventData;
2911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2912
2913 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002915 ------------------------------------------------------------------------*/
2916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2917 {
2918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2919 "WDI API call before module is initialized - Fail request");
2920
Jeff Johnsone7245742012-09-05 17:12:55 -07002921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 }
2923
2924 /*------------------------------------------------------------------------
2925 Fill in Event data and post to the Main FSM
2926 ------------------------------------------------------------------------*/
2927 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002928 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2929 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2930 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 wdiEventData.pUserData = pUserData;
2932
2933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2934
2935}/*WDI_RemoveBSSKeyReq*/
2936
2937
2938/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002939 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002940 ready to install a STA(ast) encryption key in HW. Upon
2941 the call of this API the WLAN DAL will pack and send a
2942 HAL Set STA Key request message to the lower RIVA
2943 sub-system if DAL is in state STARTED.
2944
2945 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002947
2948 WDI_PostAssocReq must have been called.
2949
Jeff Johnsone7245742012-09-05 17:12:55 -07002950 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002951 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002952
Jeff Johnson295189b2012-06-20 16:38:30 -07002953 wdiSetSTAKeyRspCb: callback for passing back the
2954 response of the set STA key operation received from the
2955 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002956
Jeff Johnson295189b2012-06-20 16:38:30 -07002957 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002958 callback
2959
Jeff Johnson295189b2012-06-20 16:38:30 -07002960 @see WDI_PostAssocReq
2961 @return Result of the function call
2962*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002964WDI_SetSTAKeyReq
2965(
2966 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2967 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2968 void* pUserData
2969)
2970{
2971 WDI_EventInfoType wdiEventData;
2972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2973
2974 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002976 ------------------------------------------------------------------------*/
2977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2978 {
2979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2980 "WDI API call before module is initialized - Fail request");
2981
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 }
2984
2985 /*------------------------------------------------------------------------
2986 Fill in Event data and post to the Main FSM
2987 ------------------------------------------------------------------------*/
2988 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2990 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2991 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002992 wdiEventData.pUserData = pUserData;
2993
2994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2995
2996}/*WDI_SetSTAKeyReq*/
2997
2998
2999/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003001 wants to uninstall a previously set STA key in HW. Upon
3002 the call of this API the WLAN DAL will pack and send a
3003 HAL Remove STA Key request message to the lower RIVA
3004 sub-system if DAL is in state STARTED.
3005
3006 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003007 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003008
3009 WDI_SetSTAKeyReq must have been called.
3010
Jeff Johnsone7245742012-09-05 17:12:55 -07003011 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003012 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003013
Jeff Johnson295189b2012-06-20 16:38:30 -07003014 wdiRemoveSTAKeyRspCb: callback for passing back the
3015 response of the remove STA key operation received from
3016 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003017
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003019 callback
3020
Jeff Johnson295189b2012-06-20 16:38:30 -07003021 @see WDI_SetSTAKeyReq
3022 @return Result of the function call
3023*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003024WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003025WDI_RemoveSTAKeyReq
3026(
3027 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3028 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3029 void* pUserData
3030)
3031{
3032 WDI_EventInfoType wdiEventData;
3033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3034
3035 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003036 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003037 ------------------------------------------------------------------------*/
3038 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3039 {
3040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3041 "WDI API call before module is initialized - Fail request");
3042
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 }
3045
3046 /*------------------------------------------------------------------------
3047 Fill in Event data and post to the Main FSM
3048 ------------------------------------------------------------------------*/
3049 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3051 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3052 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003053 wdiEventData.pUserData = pUserData;
3054
3055 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3056
3057}/*WDI_RemoveSTAKeyReq*/
3058
3059
3060/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003062 wants to install a STA Bcast encryption key on the HW.
3063 Upon the call of this API the WLAN DAL will pack and
3064 send a HAL Start request message to the lower RIVA
3065 sub-system if DAL is in state STARTED.
3066
3067 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003068 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003069
3070 WDI_PostAssocReq must have been called.
3071
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003073 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003074
Jeff Johnson295189b2012-06-20 16:38:30 -07003075 wdiSetSTABcastKeyRspCb: callback for passing back the
3076 response of the set BSS Key operation received from the
3077 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003078
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003080 callback
3081
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 @see WDI_PostAssocReq
3083 @return Result of the function call
3084*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003085WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003086WDI_SetSTABcastKeyReq
3087(
3088 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3089 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3090 void* pUserData
3091)
3092
3093{
3094 WDI_EventInfoType wdiEventData;
3095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3096
3097 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003098 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003099 ------------------------------------------------------------------------*/
3100 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3101 {
3102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3103 "WDI API call before module is initialized - Fail request");
3104
Jeff Johnsone7245742012-09-05 17:12:55 -07003105 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 }
3107
3108 /*------------------------------------------------------------------------
3109 Fill in Event data and post to the Main FSM
3110 ------------------------------------------------------------------------*/
3111 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003112 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3113 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3114 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003115 wdiEventData.pUserData = pUserData;
3116
3117 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3118
3119}/*WDI_SetSTABcastKeyReq*/
3120
3121/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003122 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003123 MAC wants to uninstall a STA Bcast key from HW. Upon the
3124 call of this API the WLAN DAL will pack and send a HAL
3125 Remove STA Bcast Key request message to the lower RIVA
3126 sub-system if DAL is in state STARTED.
3127
3128 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003129 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003130
3131 WDI_SetSTABcastKeyReq must have been called.
3132
Jeff Johnsone7245742012-09-05 17:12:55 -07003133 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003134 parameters as specified by the Device
3135 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003136
Jeff Johnson295189b2012-06-20 16:38:30 -07003137 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3138 response of the remove STA Bcast key operation received
3139 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003140
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003142 callback
3143
Jeff Johnson295189b2012-06-20 16:38:30 -07003144 @see WDI_SetSTABcastKeyReq
3145 @return Result of the function call
3146*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003147WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003148WDI_RemoveSTABcastKeyReq
3149(
3150 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3151 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3152 void* pUserData
3153)
3154{
3155 WDI_EventInfoType wdiEventData;
3156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3157
3158 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003159 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003160 ------------------------------------------------------------------------*/
3161 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3162 {
3163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3164 "WDI API call before module is initialized - Fail request");
3165
Jeff Johnsone7245742012-09-05 17:12:55 -07003166 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003167 }
3168
3169 /*------------------------------------------------------------------------
3170 Fill in Event data and post to the Main FSM
3171 ------------------------------------------------------------------------*/
3172 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3174 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3175 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003176 wdiEventData.pUserData = pUserData;
3177
3178 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3179
3180}/*WDI_RemoveSTABcastKeyReq*/
3181
3182/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003183 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 MAC wants to set Max Tx Power to HW. Upon the
3185 call of this API the WLAN DAL will pack and send a HAL
3186 Remove STA Bcast Key request message to the lower RIVA
3187 sub-system if DAL is in state STARTED.
3188
3189 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003190 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003191
3192 WDI_SetSTABcastKeyReq must have been called.
3193
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003195 parameters as specified by the Device
3196 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003197
Jeff Johnson295189b2012-06-20 16:38:30 -07003198 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3199 response of the remove STA Bcast key operation received
3200 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003201
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003203 callback
3204
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 @see WDI_SetMaxTxPowerReq
3206 @return Result of the function call
3207*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003208WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003209WDI_SetMaxTxPowerReq
3210(
3211 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3212 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3213 void* pUserData
3214)
3215{
3216 WDI_EventInfoType wdiEventData;
3217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3218
3219 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003220 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003221 ------------------------------------------------------------------------*/
3222 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3223 {
3224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3225 "WDI API call before module is initialized - Fail request");
3226
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 }
3229
3230 /*------------------------------------------------------------------------
3231 Fill in Event data and post to the Main FSM
3232 ------------------------------------------------------------------------*/
3233 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3235 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3236 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 wdiEventData.pUserData = pUserData;
3238
3239 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3240}
3241
schang86c22c42013-03-13 18:41:24 -07003242/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003243 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3244 MAC wants to set Max Tx Power to HW for specific band.
3245
3246 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3247
3248 wdiReqStatusCb: callback for passing back the
3249 response msg from the device
3250
3251 pUserData: user data will be passed back with the
3252 callback
3253
3254 @see WDI_SetMaxTxPowerPerBandReq
3255 @return Result of the function call
3256*/
3257WDI_Status
3258WDI_SetMaxTxPowerPerBandReq
3259(
3260 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3261 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3262 void* pUserData
3263)
3264{
3265 WDI_EventInfoType wdiEventData;
3266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3267
3268 /*------------------------------------------------------------------------
3269 Sanity Check
3270 ------------------------------------------------------------------------*/
3271 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3272 {
3273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3274 "WDI API call before module is initialized - Fail request");
3275
3276 return WDI_STATUS_E_NOT_ALLOWED;
3277 }
3278
3279 /*------------------------------------------------------------------------
3280 Fill in Event data and post to the Main FSM
3281 ------------------------------------------------------------------------*/
3282 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3283 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3284 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3285 wdiEventData.pCBfnc = wdiReqStatusCb;
3286 wdiEventData.pUserData = pUserData;
3287
3288 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3289}
3290
3291/**
schang86c22c42013-03-13 18:41:24 -07003292 @brief WDI_SetTxPowerReq will be called when the upper
3293 MAC wants to set Tx Power to HW.
3294 In state BUSY this request will be queued. Request won't
3295 be allowed in any other state.
3296
3297
3298 @param pwdiSetTxPowerParams: set TS Power parameters
3299 BSSID and target TX Power with dbm included
3300
3301 wdiReqStatusCb: callback for passing back the response
3302
3303 pUserData: user data will be passed back with the
3304 callback
3305
3306 @return Result of the function call
3307*/
3308WDI_Status
3309WDI_SetTxPowerReq
3310(
3311 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3312 WDA_SetTxPowerRspCb wdiReqStatusCb,
3313 void* pUserData
3314)
3315{
3316 WDI_EventInfoType wdiEventData;
3317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3318
3319 /*------------------------------------------------------------------------
3320 Sanity Check
3321 ------------------------------------------------------------------------*/
3322 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3323 {
3324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3325 "WDI API call before module is initialized - Fail request");
3326
3327 return WDI_STATUS_E_NOT_ALLOWED;
3328 }
3329
3330 /*------------------------------------------------------------------------
3331 Fill in Event data and post to the Main FSM
3332 ------------------------------------------------------------------------*/
3333 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3334 wdiEventData.pEventData = pwdiSetTxPowerParams;
3335 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3336 wdiEventData.pCBfnc = wdiReqStatusCb;
3337 wdiEventData.pUserData = pUserData;
3338
3339 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3340}
3341
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003342#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003343WDI_Status
3344WDI_TSMStatsReq
3345(
3346 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3347 WDI_TsmRspCb wdiReqStatusCb,
3348 void* pUserData
3349)
3350{
3351 WDI_EventInfoType wdiEventData;
3352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 /*------------------------------------------------------------------------
3354 Sanity Check
3355 ------------------------------------------------------------------------*/
3356 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3357 {
3358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3359 "WDI API call before module is initialized - Fail request");
3360
3361 return WDI_STATUS_E_NOT_ALLOWED;
3362 }
3363
3364 /*------------------------------------------------------------------------
3365 Fill in Event data and post to the Main FSM
3366 ------------------------------------------------------------------------*/
3367 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3368 wdiEventData.pEventData = pwdiTsmReqParams;
3369 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3370 wdiEventData.pCBfnc = wdiReqStatusCb;
3371 wdiEventData.pUserData = pUserData;
3372
3373 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3374
3375}
3376#endif
3377
3378/*========================================================================
3379
3380 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003381
Jeff Johnson295189b2012-06-20 16:38:30 -07003382==========================================================================*/
3383
3384/**
3385 @brief WDI_AddTSReq will be called when the upper MAC to inform
3386 the device of a successful add TSpec negotiation. HW
3387 needs to receive the TSpec Info from the UMAC in order
3388 to configure properly the QoS data traffic. Upon the
3389 call of this API the WLAN DAL will pack and send a HAL
3390 Add TS request message to the lower RIVA sub-system if
3391 DAL is in state STARTED.
3392
3393 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003394 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003395
3396 WDI_PostAssocReq must have been called.
3397
3398 @param wdiAddTsReqParams: the add TS parameters as specified by
3399 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003400
Jeff Johnson295189b2012-06-20 16:38:30 -07003401 wdiAddTsRspCb: callback for passing back the response of
3402 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003403
Jeff Johnson295189b2012-06-20 16:38:30 -07003404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 callback
3406
Jeff Johnson295189b2012-06-20 16:38:30 -07003407 @see WDI_PostAssocReq
3408 @return Result of the function call
3409*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003410WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003411WDI_AddTSReq
3412(
3413 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3414 WDI_AddTsRspCb wdiAddTsRspCb,
3415 void* pUserData
3416)
3417{
3418 WDI_EventInfoType wdiEventData;
3419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3420
3421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003423 ------------------------------------------------------------------------*/
3424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3425 {
3426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3427 "WDI API call before module is initialized - Fail request");
3428
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 }
3431
3432 /*------------------------------------------------------------------------
3433 Fill in Event data and post to the Main FSM
3434 ------------------------------------------------------------------------*/
3435 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003436 wdiEventData.pEventData = pwdiAddTsReqParams;
3437 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3438 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003439 wdiEventData.pUserData = pUserData;
3440
3441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3442
3443}/*WDI_AddTSReq*/
3444
3445
3446
3447/**
3448 @brief WDI_DelTSReq will be called when the upper MAC has ended
3449 admission on a specific AC. This is to inform HW that
3450 QoS traffic parameters must be rest. Upon the call of
3451 this API the WLAN DAL will pack and send a HAL Del TS
3452 request message to the lower RIVA sub-system if DAL is
3453 in state STARTED.
3454
3455 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003456 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003457
3458 WDI_AddTSReq must have been called.
3459
3460 @param wdiDelTsReqParams: the del TS parameters as specified by
3461 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003462
Jeff Johnson295189b2012-06-20 16:38:30 -07003463 wdiDelTsRspCb: callback for passing back the response of
3464 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003465
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003467 callback
3468
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 @see WDI_AddTSReq
3470 @return Result of the function call
3471*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003472WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003473WDI_DelTSReq
3474(
3475 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3476 WDI_DelTsRspCb wdiDelTsRspCb,
3477 void* pUserData
3478)
3479{
3480 WDI_EventInfoType wdiEventData;
3481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3482
3483 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 ------------------------------------------------------------------------*/
3486 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3487 {
3488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3489 "WDI API call before module is initialized - Fail request");
3490
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 }
3493
3494 /*------------------------------------------------------------------------
3495 Fill in Event data and post to the Main FSM
3496 ------------------------------------------------------------------------*/
3497 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 wdiEventData.pEventData = pwdiDelTsReqParams;
3499 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3500 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 wdiEventData.pUserData = pUserData;
3502
3503 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3504
3505}/*WDI_DelTSReq*/
3506
3507
3508
3509/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003510 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003511 wishes to update the EDCA parameters used by HW for QoS
3512 data traffic. Upon the call of this API the WLAN DAL
3513 will pack and send a HAL Update EDCA Params request
3514 message to the lower RIVA sub-system if DAL is in state
3515 STARTED.
3516
3517 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003518 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003519
3520 WDI_PostAssocReq must have been called.
3521
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003524
Jeff Johnson295189b2012-06-20 16:38:30 -07003525 wdiUpdateEDCAParamsRspCb: callback for passing back the
3526 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003527
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 callback
3530
Jeff Johnson295189b2012-06-20 16:38:30 -07003531 @see WDI_PostAssocReq
3532 @return Result of the function call
3533*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003534WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003535WDI_UpdateEDCAParams
3536(
3537 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3538 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3539 void* pUserData
3540)
3541{
3542 WDI_EventInfoType wdiEventData;
3543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3544
3545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003547 ------------------------------------------------------------------------*/
3548 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3549 {
3550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3551 "WDI API call before module is initialized - Fail request");
3552
Jeff Johnsone7245742012-09-05 17:12:55 -07003553 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003554 }
3555
3556 /*------------------------------------------------------------------------
3557 Fill in Event data and post to the Main FSM
3558 ------------------------------------------------------------------------*/
3559 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003560 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3561 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3562 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003563 wdiEventData.pUserData = pUserData;
3564
3565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3566
3567}/*WDI_UpdateEDCAParams*/
3568
3569
3570/**
3571 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3572 successfully a BA session and needs to notify the HW for
3573 the appropriate settings to take place. Upon the call of
3574 this API the WLAN DAL will pack and send a HAL Add BA
3575 request message to the lower RIVA sub-system if DAL is
3576 in state STARTED.
3577
3578 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003580
3581 WDI_PostAssocReq must have been called.
3582
3583 @param wdiAddBAReqParams: the add BA parameters as specified by
3584 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003585
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 wdiAddBARspCb: callback for passing back the response of
3587 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003590 callback
3591
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 @see WDI_PostAssocReq
3593 @return Result of the function call
3594*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003595WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003596WDI_AddBASessionReq
3597(
3598 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3599 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3600 void* pUserData
3601)
3602{
3603 WDI_EventInfoType wdiEventData;
3604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3605
3606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003607 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 ------------------------------------------------------------------------*/
3609 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3610 {
3611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3612 "WDI API call before module is initialized - Fail request");
3613
Jeff Johnsone7245742012-09-05 17:12:55 -07003614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 }
3616
3617 /*------------------------------------------------------------------------
3618 Fill in Event data and post to the Main FSM
3619 ------------------------------------------------------------------------*/
3620 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3622 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3623 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 wdiEventData.pUserData = pUserData;
3625
3626 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3627
3628}/*WDI_AddBASessionReq*/
3629
3630/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003631 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003632 inform HW that it has deleted a previously created BA
3633 session. Upon the call of this API the WLAN DAL will
3634 pack and send a HAL Del BA request message to the lower
3635 RIVA sub-system if DAL is in state STARTED.
3636
3637 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003638 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003639
3640 WDI_AddBAReq must have been called.
3641
3642 @param wdiDelBAReqParams: the del BA parameters as specified by
3643 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003644
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 wdiDelBARspCb: callback for passing back the response of
3646 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003647
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003649 callback
3650
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 @see WDI_AddBAReq
3652 @return Result of the function call
3653*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003654WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003655WDI_DelBAReq
3656(
3657 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3658 WDI_DelBARspCb wdiDelBARspCb,
3659 void* pUserData
3660)
3661{
3662 WDI_EventInfoType wdiEventData;
3663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3664
3665 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003666 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003667 ------------------------------------------------------------------------*/
3668 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3669 {
3670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3671 "WDI API call before module is initialized - Fail request");
3672
Jeff Johnsone7245742012-09-05 17:12:55 -07003673 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003674 }
3675
3676 /*------------------------------------------------------------------------
3677 Fill in Event data and post to the Main FSM
3678 ------------------------------------------------------------------------*/
3679 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 wdiEventData.pEventData = pwdiDelBAReqParams;
3681 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3682 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 wdiEventData.pUserData = pUserData;
3684
3685 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3686
3687}/*WDI_DelBAReq*/
3688
Jeff Johnsone7245742012-09-05 17:12:55 -07003689/*========================================================================
3690
Jeff Johnson295189b2012-06-20 16:38:30 -07003691 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003692
Jeff Johnson295189b2012-06-20 16:38:30 -07003693==========================================================================*/
3694
3695/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003697 wants to set the power save related configurations of
3698 the WLAN Device. Upon the call of this API the WLAN DAL
3699 will pack and send a HAL Update CFG request message to
3700 the lower RIVA sub-system if DAL is in state STARTED.
3701
3702 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003704
3705 WDI_Start must have been called.
3706
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003709
Jeff Johnson295189b2012-06-20 16:38:30 -07003710 wdiSetPwrSaveCfgCb: callback for passing back the
3711 response of the set power save cfg operation received
3712 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003713
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003715 callback
3716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003718 @return Result of the function call
3719*/
3720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003721WDI_SetPwrSaveCfgReq
3722(
3723 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3724 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3725 void* pUserData
3726)
3727{
3728 WDI_EventInfoType wdiEventData;
3729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3730
3731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003733 ------------------------------------------------------------------------*/
3734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3735 {
3736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3737 "WDI API call before module is initialized - Fail request");
3738
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 }
3741
3742 /*------------------------------------------------------------------------
3743 Fill in Event data and post to the Main FSM
3744 ------------------------------------------------------------------------*/
3745 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 wdiEventData.pEventData = pwdiPowerSaveCfg;
3747 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3748 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 wdiEventData.pUserData = pUserData;
3750
3751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3752
3753}/*WDI_SetPwrSaveCfgReq*/
3754
3755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003757 request the device to get into IMPS power state. Upon
3758 the call of this API the WLAN DAL will send a HAL Enter
3759 IMPS request message to the lower RIVA sub-system if DAL
3760 is in state STARTED.
3761
3762 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003764
Jeff Johnsone7245742012-09-05 17:12:55 -07003765
3766 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 response of the Enter IMPS operation received from the
3768 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003769
Jeff Johnson295189b2012-06-20 16:38:30 -07003770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003771 callback
3772
Jeff Johnson295189b2012-06-20 16:38:30 -07003773 @see WDI_Start
3774 @return Result of the function call
3775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003777WDI_EnterImpsReq
3778(
Mihir Shetea4306052014-03-25 00:02:54 +05303779 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3781 void* pUserData
3782)
3783{
3784 WDI_EventInfoType wdiEventData;
3785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3786
3787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 ------------------------------------------------------------------------*/
3790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3791 {
3792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3793 "WDI API call before module is initialized - Fail request");
3794
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 }
3797
3798 /*------------------------------------------------------------------------
3799 Fill in Event data and post to the Main FSM
3800 ------------------------------------------------------------------------*/
3801 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303802 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3803 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003804 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003805 wdiEventData.pUserData = pUserData;
3806
3807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3808
3809}/*WDI_EnterImpsReq*/
3810
3811/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003812 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 request the device to get out of IMPS power state. Upon
3814 the call of this API the WLAN DAL will send a HAL Exit
3815 IMPS request message to the lower RIVA sub-system if DAL
3816 is in state STARTED.
3817
3818 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003820
Jeff Johnson295189b2012-06-20 16:38:30 -07003821
Jeff Johnsone7245742012-09-05 17:12:55 -07003822
3823 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003827 callback
3828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 @see WDI_Start
3830 @return Result of the function call
3831*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003833WDI_ExitImpsReq
3834(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303835 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3837 void* pUserData
3838)
3839{
3840 WDI_EventInfoType wdiEventData;
3841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3842
3843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 ------------------------------------------------------------------------*/
3846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3847 {
3848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3849 "WDI API call before module is initialized - Fail request");
3850
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 }
3853
3854 /*------------------------------------------------------------------------
3855 Fill in Event data and post to the Main FSM
3856 ------------------------------------------------------------------------*/
3857 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303858 wdiEventData.pEventData = pwdiExitImpsReqParams;
3859 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003860 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 wdiEventData.pUserData = pUserData;
3862
3863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3864
3865}/*WDI_ExitImpsReq*/
3866
3867/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 request the device to get into BMPS power state. Upon
3870 the call of this API the WLAN DAL will pack and send a
3871 HAL Enter BMPS request message to the lower RIVA
3872 sub-system if DAL is in state STARTED.
3873
3874 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003876
3877 WDI_PostAssocReq must have been called.
3878
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 wdiEnterBmpsRspCb: callback for passing back the
3883 response of the Enter BMPS operation received from the
3884 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 callback
3888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 @see WDI_PostAssocReq
3890 @return Result of the function call
3891*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003892WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003893WDI_EnterBmpsReq
3894(
3895 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3896 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3897 void* pUserData
3898)
3899{
3900 WDI_EventInfoType wdiEventData;
3901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3902
3903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003904 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003905 ------------------------------------------------------------------------*/
3906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3907 {
3908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3909 "WDI API call before module is initialized - Fail request");
3910
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 }
3913
3914 /*------------------------------------------------------------------------
3915 Fill in Event data and post to the Main FSM
3916 ------------------------------------------------------------------------*/
3917 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3919 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3920 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 wdiEventData.pUserData = pUserData;
3922
3923 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3924
3925}/*WDI_EnterBmpsReq*/
3926
3927/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 request the device to get out of BMPS power state. Upon
3930 the call of this API the WLAN DAL will pack and send a
3931 HAL Exit BMPS request message to the lower RIVA
3932 sub-system if DAL is in state STARTED.
3933
3934 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003936
3937 WDI_PostAssocReq must have been called.
3938
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003941
Jeff Johnson295189b2012-06-20 16:38:30 -07003942 wdiExitBmpsRspCb: callback for passing back the response
3943 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003944
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003946 callback
3947
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 @see WDI_PostAssocReq
3949 @return Result of the function call
3950*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003951WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003952WDI_ExitBmpsReq
3953(
3954 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3955 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3956 void* pUserData
3957)
3958{
3959 WDI_EventInfoType wdiEventData;
3960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3961
3962 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003963 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 ------------------------------------------------------------------------*/
3965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3966 {
3967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3968 "WDI API call before module is initialized - Fail request");
3969
Jeff Johnsone7245742012-09-05 17:12:55 -07003970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 }
3972
3973 /*------------------------------------------------------------------------
3974 Fill in Event data and post to the Main FSM
3975 ------------------------------------------------------------------------*/
3976 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3978 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3979 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003980 wdiEventData.pUserData = pUserData;
3981
3982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3983
3984}/*WDI_ExitBmpsReq*/
3985
3986/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003987 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 request the device to get into UAPSD power state. Upon
3989 the call of this API the WLAN DAL will pack and send a
3990 HAL Enter UAPSD request message to the lower RIVA
3991 sub-system if DAL is in state STARTED.
3992
3993 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003994 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003995
3996 WDI_PostAssocReq must have been called.
3997 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003998
3999 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004001
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 wdiEnterUapsdRspCb: callback for passing back the
4003 response of the Enter UAPSD operation received from the
4004 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004007 callback
4008
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4010 @return Result of the function call
4011*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004012WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004013WDI_EnterUapsdReq
4014(
4015 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4016 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4017 void* pUserData
4018)
4019{
4020 WDI_EventInfoType wdiEventData;
4021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4022
4023 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004024 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004025 ------------------------------------------------------------------------*/
4026 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4027 {
4028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4029 "WDI API call before module is initialized - Fail request");
4030
Jeff Johnsone7245742012-09-05 17:12:55 -07004031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004032 }
4033
4034 /*------------------------------------------------------------------------
4035 Fill in Event data and post to the Main FSM
4036 ------------------------------------------------------------------------*/
4037 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004038 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4039 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4040 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004041 wdiEventData.pUserData = pUserData;
4042
4043 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4044
4045}/*WDI_EnterUapsdReq*/
4046
4047/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004048 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004049 request the device to get out of UAPSD power state. Upon
4050 the call of this API the WLAN DAL will send a HAL Exit
4051 UAPSD request message to the lower RIVA sub-system if
4052 DAL is in state STARTED.
4053
4054 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004055 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004056
4057 WDI_PostAssocReq must have been called.
4058
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004060 response of the Exit UAPSD operation received from the
4061 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004062
Jeff Johnson295189b2012-06-20 16:38:30 -07004063 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 callback
4065
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 @see WDI_PostAssocReq
4067 @return Result of the function call
4068*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004069WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004070WDI_ExitUapsdReq
4071(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004072 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4074 void* pUserData
4075)
4076{
4077 WDI_EventInfoType wdiEventData;
4078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4079
4080 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004081 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 ------------------------------------------------------------------------*/
4083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4084 {
4085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4086 "WDI API call before module is initialized - Fail request");
4087
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 }
4090
4091 /*------------------------------------------------------------------------
4092 Fill in Event data and post to the Main FSM
4093 ------------------------------------------------------------------------*/
4094 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004095 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4096 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 wdiEventData.pUserData = pUserData;
4099
4100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4101
4102}/*WDI_ExitUapsdReq*/
4103
4104/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004105 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 MAC wants to set the UAPSD related configurations
4107 of an associated STA (while acting as an AP) to the WLAN
4108 Device. Upon the call of this API the WLAN DAL will pack
4109 and send a HAL Update UAPSD params request message to
4110 the lower RIVA sub-system if DAL is in state STARTED.
4111
4112 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004114
4115 WDI_ConfigBSSReq must have been called.
4116
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004118 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 wdiUpdateUapsdParamsCb: callback for passing back the
4121 response of the update UAPSD params operation received
4122 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004123
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004125 callback
4126
Jeff Johnson295189b2012-06-20 16:38:30 -07004127 @see WDI_ConfigBSSReq
4128 @return Result of the function call
4129*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004130WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004131WDI_UpdateUapsdParamsReq
4132(
4133 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4134 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4135 void* pUserData
4136)
4137{
4138 WDI_EventInfoType wdiEventData;
4139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4140
4141 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004142 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004143 ------------------------------------------------------------------------*/
4144 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4145 {
4146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4147 "WDI API call before module is initialized - Fail request");
4148
Jeff Johnsone7245742012-09-05 17:12:55 -07004149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004150 }
4151
4152 /*------------------------------------------------------------------------
4153 Fill in Event data and post to the Main FSM
4154 ------------------------------------------------------------------------*/
4155 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004157 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004158 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004159 wdiEventData.pUserData = pUserData;
4160
4161 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4162
4163}/*WDI_UpdateUapsdParamsReq*/
4164
4165/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004166 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004167 MAC wants to set the UAPSD related configurations before
4168 requesting for enter UAPSD power state to the WLAN
4169 Device. Upon the call of this API the WLAN DAL will pack
4170 and send a HAL Set UAPSD params request message to
4171 the lower RIVA sub-system if DAL is in state STARTED.
4172
4173 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004175
4176 WDI_PostAssocReq must have been called.
4177
4178 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4179 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004180
Jeff Johnson295189b2012-06-20 16:38:30 -07004181 wdiSetUapsdAcParamsCb: callback for passing back the
4182 response of the set UAPSD params operation received from
4183 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004184
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 callback
4187
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 @see WDI_PostAssocReq
4189 @return Result of the function call
4190*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004191WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004192WDI_SetUapsdAcParamsReq
4193(
4194 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4195 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4196 void* pUserData
4197)
4198{
4199 WDI_EventInfoType wdiEventData;
4200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4201
4202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004203 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004204 ------------------------------------------------------------------------*/
4205 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4206 {
4207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4208 "WDI API call before module is initialized - Fail request");
4209
Jeff Johnsone7245742012-09-05 17:12:55 -07004210 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 }
4212
4213 /*------------------------------------------------------------------------
4214 Fill in Event data and post to the Main FSM
4215 ------------------------------------------------------------------------*/
4216 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 wdiEventData.pEventData = pwdiUapsdInfo;
4218 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4219 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004220 wdiEventData.pUserData = pUserData;
4221
4222 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4223
4224}/*WDI_SetUapsdAcParamsReq*/
4225
4226/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304227 @brief WDI_FWLoggingDXEdoneInd
4228
4229 FW Logging DXE done Indication from the upper layer will be sent
4230 down to HAL
4231
4232 @param WDI_FWLoggingDXEdoneIndInfoType
4233
4234 @see
4235
4236 @return Status of the request
4237*/
4238WDI_Status
4239WDI_FWLoggingDXEdoneInd
4240(
4241 WDI_FWLoggingDXEdoneIndInfoType* pwdiFWLoggingDXEdoneInd
4242)
4243{
4244
4245 WDI_EventInfoType wdiEventData;
4246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4247
4248 /*------------------------------------------------------------------------
4249 Sanity Check
4250 ------------------------------------------------------------------------*/
4251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4252 {
4253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4254 "WDI API call before module is initialized - Fail request");
4255
4256 return WDI_STATUS_E_NOT_ALLOWED;
4257 }
4258
4259 /*------------------------------------------------------------------------
4260 Fill in Event data and post to the Main FSM
4261 ------------------------------------------------------------------------*/
4262 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
4263 wdiEventData.pEventData = pwdiFWLoggingDXEdoneInd;
4264 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingDXEdoneInd);
4265 wdiEventData.pCBfnc = NULL;
4266 wdiEventData.pUserData = NULL;
4267
4268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4269
4270}/*WDI_FWLoggingDXEdoneInd*/
4271
4272/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304273 @brief WDI_GetFrameLogReq will be called when the upper
4274 MAC wants to initialize frame logging. Upon the call of
4275 this API the WLAN DAL will pack and send a HAL
4276 Frame logging init request message to
4277 the lower RIVA sub-system.
4278
4279 In state BUSY this request will be queued. Request won't
4280 be allowed in any other state.
4281
4282
4283 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4284 as specified by the Device Interface
4285
4286 wdiGetFrameLogRspCb: callback for passing back the
4287 response of the frame logging init operation received
4288 from the device
4289
4290 pUserData: user data will be passed back with the
4291 callback
4292
4293 @return Result of the function call
4294*/
4295WDI_Status
4296WDI_GetFrameLogReq
4297(
4298 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4299 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4300 void* pUserData
4301)
4302{
4303 WDI_EventInfoType wdiEventData;
4304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4305
4306 /*------------------------------------------------------------------------
4307 Sanity Check
4308 ------------------------------------------------------------------------*/
4309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4310 {
4311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4312 "WDI API call before module is initialized - Fail request");
4313
4314 return WDI_STATUS_E_NOT_ALLOWED;
4315 }
4316
4317 /*------------------------------------------------------------------------
4318 Fill in Event data and post to the Main FSM
4319 ------------------------------------------------------------------------*/
4320 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4321 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4322 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4323 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4324 wdiEventData.pUserData = pUserData;
4325
4326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4327}
4328/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304329 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304330 MAC wants to initialize frame logging. Upon the call of
4331 this API the WLAN DAL will pack and send a HAL
4332 Frame logging init request message to
4333 the lower RIVA sub-system.
4334
4335 In state BUSY this request will be queued. Request won't
4336 be allowed in any other state.
4337
4338
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304339 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304340 as specified by the Device Interface
4341
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304342 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304343 response of the frame logging init operation received
4344 from the device
4345
4346 pUserData: user data will be passed back with the
4347 callback
4348
4349 @return Result of the function call
4350*/
4351WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304352WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304353(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304354 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4355 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304356 void* pUserData
4357)
4358{
4359 WDI_EventInfoType wdiEventData;
4360
4361 /*------------------------------------------------------------------------
4362 Sanity Check
4363 ------------------------------------------------------------------------*/
4364 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4365 {
4366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4367 "WDI API call before module is initialized - Fail request");
4368
4369 return WDI_STATUS_E_NOT_ALLOWED;
4370 }
4371
4372 /*------------------------------------------------------------------------
4373 Fill in Event data and post to the Main FSM
4374 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304375 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4376 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4377 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4378 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304379 wdiEventData.pUserData = pUserData;
4380
4381 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4382}
4383
4384/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004385 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 MAC wants to set/reset the RXP filters for received pkts
4387 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4388 and send a HAL configure RXP filter request message to
4389 the lower RIVA sub-system.
4390
4391 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004393
Jeff Johnsone7245742012-09-05 17:12:55 -07004394
4395 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004396 filter as specified by the Device
4397 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004398
Jeff Johnson295189b2012-06-20 16:38:30 -07004399 wdiConfigureRxpFilterCb: callback for passing back the
4400 response of the configure RXP filter operation received
4401 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004402
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 callback
4405
Jeff Johnson295189b2012-06-20 16:38:30 -07004406 @return Result of the function call
4407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004409WDI_ConfigureRxpFilterReq
4410(
4411 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4412 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4413 void* pUserData
4414)
4415{
4416 WDI_EventInfoType wdiEventData;
4417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4418
4419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004420 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 ------------------------------------------------------------------------*/
4422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4423 {
4424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4425 "WDI API call before module is initialized - Fail request");
4426
Jeff Johnsone7245742012-09-05 17:12:55 -07004427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004428 }
4429
4430 /*------------------------------------------------------------------------
4431 Fill in Event data and post to the Main FSM
4432 ------------------------------------------------------------------------*/
4433 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004434 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4435 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4436 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004437 wdiEventData.pUserData = pUserData;
4438
4439 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4440}/*WDI_ConfigureRxpFilterReq*/
4441
4442/**
4443 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4444 wants to set the beacon filters while in power save.
4445 Upon the call of this API the WLAN DAL will pack and
4446 send a Beacon filter request message to the
4447 lower RIVA sub-system.
4448
4449 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004450 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004451
Jeff Johnsone7245742012-09-05 17:12:55 -07004452
4453 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004454 filter as specified by the Device
4455 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004456
Jeff Johnson295189b2012-06-20 16:38:30 -07004457 wdiBeaconFilterCb: callback for passing back the
4458 response of the set beacon filter operation received
4459 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004460
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004462 callback
4463
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 @return Result of the function call
4465*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004466WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004467WDI_SetBeaconFilterReq
4468(
4469 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4470 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4471 void* pUserData
4472)
4473{
4474 WDI_EventInfoType wdiEventData;
4475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4476
4477 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004478 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004479 ------------------------------------------------------------------------*/
4480 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4481 {
4482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4483 "WDI API call before module is initialized - Fail request");
4484
Jeff Johnsone7245742012-09-05 17:12:55 -07004485 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004486 }
4487
4488 /*------------------------------------------------------------------------
4489 Fill in Event data and post to the Main FSM
4490 ------------------------------------------------------------------------*/
4491 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004492 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004493 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004494 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004495 wdiEventData.pUserData = pUserData;
4496
4497 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4498}/*WDI_SetBeaconFilterReq*/
4499
4500/**
4501 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4502 wants to remove the beacon filter for particular IE
4503 while in power save. Upon the call of this API the WLAN
4504 DAL will pack and send a remove Beacon filter request
4505 message to the lower RIVA sub-system.
4506
4507 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004508 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004509
Jeff Johnsone7245742012-09-05 17:12:55 -07004510
4511 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 filter as specified by the Device
4513 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004514
Jeff Johnson295189b2012-06-20 16:38:30 -07004515 wdiBeaconFilterCb: callback for passing back the
4516 response of the remove beacon filter operation received
4517 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004518
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004520 callback
4521
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 @return Result of the function call
4523*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004525WDI_RemBeaconFilterReq
4526(
4527 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4528 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4529 void* pUserData
4530)
4531{
4532 WDI_EventInfoType wdiEventData;
4533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4534
4535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004537 ------------------------------------------------------------------------*/
4538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4539 {
4540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4541 "WDI API call before module is initialized - Fail request");
4542
Jeff Johnsone7245742012-09-05 17:12:55 -07004543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 }
4545
4546 /*------------------------------------------------------------------------
4547 Fill in Event data and post to the Main FSM
4548 ------------------------------------------------------------------------*/
4549 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004550 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004551 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004552 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 wdiEventData.pUserData = pUserData;
4554
4555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4556}/*WDI_RemBeaconFilterReq*/
4557
4558/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 MAC wants to set the RSSI thresholds related
4561 configurations while in power save. Upon the call of
4562 this API the WLAN DAL will pack and send a HAL Set RSSI
4563 thresholds request message to the lower RIVA
4564 sub-system if DAL is in state STARTED.
4565
4566 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004567 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004568
4569 WDI_PostAssocReq must have been called.
4570
4571 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4572 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004573
Jeff Johnson295189b2012-06-20 16:38:30 -07004574 wdiSetUapsdAcParamsCb: callback for passing back the
4575 response of the set UAPSD params operation received from
4576 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004577
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004579 callback
4580
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 @see WDI_PostAssocReq
4582 @return Result of the function call
4583*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004584WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004585WDI_SetRSSIThresholdsReq
4586(
4587 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4588 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4589 void* pUserData
4590)
4591{
4592 WDI_EventInfoType wdiEventData;
4593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4594
4595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 ------------------------------------------------------------------------*/
4598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4599 {
4600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4601 "WDI API call before module is initialized - Fail request");
4602
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 }
4605
4606 /*------------------------------------------------------------------------
4607 Fill in Event data and post to the Main FSM
4608 ------------------------------------------------------------------------*/
4609 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004610 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004611 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 wdiEventData.pUserData = pUserData;
4614
4615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4616}/* WDI_SetRSSIThresholdsReq*/
4617
4618/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 wants to set the filter to minimize unnecessary host
4621 wakeup due to broadcast traffic while in power save.
4622 Upon the call of this API the WLAN DAL will pack and
4623 send a HAL host offload request message to the
4624 lower RIVA sub-system if DAL is in state STARTED.
4625
4626 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004627 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004628
4629 WDI_PostAssocReq must have been called.
4630
Jeff Johnsone7245742012-09-05 17:12:55 -07004631 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004632 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004633
Jeff Johnson295189b2012-06-20 16:38:30 -07004634 wdiHostOffloadCb: callback for passing back the response
4635 of the host offload operation received from the
4636 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004637
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004639 callback
4640
Jeff Johnson295189b2012-06-20 16:38:30 -07004641 @see WDI_PostAssocReq
4642 @return Result of the function call
4643*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004644WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004645WDI_HostOffloadReq
4646(
4647 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4648 WDI_HostOffloadCb wdiHostOffloadCb,
4649 void* pUserData
4650)
4651{
4652 WDI_EventInfoType wdiEventData;
4653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4654
4655 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004656 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 ------------------------------------------------------------------------*/
4658 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4659 {
4660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4661 "WDI API call before module is initialized - Fail request");
4662
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 }
4665
4666 /*------------------------------------------------------------------------
4667 Fill in Event data and post to the Main FSM
4668 ------------------------------------------------------------------------*/
4669 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004671 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 wdiEventData.pUserData = pUserData;
4674
4675 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4676}/*WDI_HostOffloadReq*/
4677
4678/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 @brief WDI_KeepAliveReq will be called when the upper MAC
4680 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004681 and minimize unnecessary host wakeups due to while in power save.
4682 Upon the call of this API the WLAN DAL will pack and
4683 send a HAL Keep Alive request message to the
4684 lower RIVA sub-system if DAL is in state STARTED.
4685
4686 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004687 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004688
4689 WDI_PostAssocReq must have been called.
4690
Jeff Johnsone7245742012-09-05 17:12:55 -07004691 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004692 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004693
Jeff Johnson295189b2012-06-20 16:38:30 -07004694 wdiKeepAliveCb: callback for passing back the response
4695 of the Keep Alive operation received from the
4696 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004697
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004699 callback
4700
Jeff Johnson295189b2012-06-20 16:38:30 -07004701 @see WDI_PostAssocReq
4702 @return Result of the function call
4703*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004704WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004705WDI_KeepAliveReq
4706(
4707 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4708 WDI_KeepAliveCb wdiKeepAliveCb,
4709 void* pUserData
4710)
4711{
4712 WDI_EventInfoType wdiEventData;
4713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4714
4715 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004716 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 ------------------------------------------------------------------------*/
4718 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4719 {
4720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4721 "WDI_KeepAliveReq: WDI API call before module "
4722 "is initialized - Fail request");
4723
Jeff Johnsone7245742012-09-05 17:12:55 -07004724 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 }
4726
4727 /*------------------------------------------------------------------------
4728 Fill in Event data and post to the Main FSM
4729 ------------------------------------------------------------------------*/
4730 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 wdiEventData.pEventData = pwdiKeepAliveParams;
4732 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4733 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004734 wdiEventData.pUserData = pUserData;
4735
4736 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4737}/*WDI_KeepAliveReq*/
4738
4739/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 wants to set the Wowl Bcast ptrn to minimize unnecessary
4742 host wakeup due to broadcast traffic while in power
4743 save. Upon the call of this API the WLAN DAL will pack
4744 and send a HAL Wowl Bcast ptrn request message to the
4745 lower RIVA sub-system if DAL is in state STARTED.
4746
4747 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004748 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004749
4750 WDI_PostAssocReq must have been called.
4751
Jeff Johnsone7245742012-09-05 17:12:55 -07004752 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004753 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004754
Jeff Johnson295189b2012-06-20 16:38:30 -07004755 wdiWowlAddBcPtrnCb: callback for passing back the
4756 response of the add Wowl bcast ptrn operation received
4757 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004758
Jeff Johnson295189b2012-06-20 16:38:30 -07004759 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004760 callback
4761
Jeff Johnson295189b2012-06-20 16:38:30 -07004762 @see WDI_PostAssocReq
4763 @return Result of the function call
4764*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004765WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004766WDI_WowlAddBcPtrnReq
4767(
4768 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4769 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4770 void* pUserData
4771)
4772{
4773 WDI_EventInfoType wdiEventData;
4774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4775
4776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004777 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 ------------------------------------------------------------------------*/
4779 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4780 {
4781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4782 "WDI API call before module is initialized - Fail request");
4783
Jeff Johnsone7245742012-09-05 17:12:55 -07004784 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 }
4786
4787 /*------------------------------------------------------------------------
4788 Fill in Event data and post to the Main FSM
4789 ------------------------------------------------------------------------*/
4790 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004791 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004792 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004793 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004794 wdiEventData.pUserData = pUserData;
4795
4796 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4797}/*WDI_WowlAddBcPtrnReq*/
4798
4799/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004800 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 wants to clear the Wowl Bcast ptrn. Upon the call of
4802 this API the WLAN DAL will pack and send a HAL delete
4803 Wowl Bcast ptrn request message to the lower RIVA
4804 sub-system if DAL is in state STARTED.
4805
4806 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004807 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004808
4809 WDI_WowlAddBcPtrnReq must have been called.
4810
Jeff Johnsone7245742012-09-05 17:12:55 -07004811 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004812 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004813
Jeff Johnson295189b2012-06-20 16:38:30 -07004814 wdiWowlDelBcPtrnCb: callback for passing back the
4815 response of the del Wowl bcast ptrn operation received
4816 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004817
Jeff Johnson295189b2012-06-20 16:38:30 -07004818 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004819 callback
4820
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 @see WDI_WowlAddBcPtrnReq
4822 @return Result of the function call
4823*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004824WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004825WDI_WowlDelBcPtrnReq
4826(
4827 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4828 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4829 void* pUserData
4830)
4831{
4832 WDI_EventInfoType wdiEventData;
4833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4834
4835 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004836 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 ------------------------------------------------------------------------*/
4838 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4839 {
4840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4841 "WDI API call before module is initialized - Fail request");
4842
Jeff Johnsone7245742012-09-05 17:12:55 -07004843 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004844 }
4845
4846 /*------------------------------------------------------------------------
4847 Fill in Event data and post to the Main FSM
4848 ------------------------------------------------------------------------*/
4849 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004850 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004851 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004852 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004853 wdiEventData.pUserData = pUserData;
4854
4855 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4856}/*WDI_WowlDelBcPtrnReq*/
4857
4858/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004859 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 wants to enter the Wowl state to minimize unnecessary
4861 host wakeup while in power save. Upon the call of this
4862 API the WLAN DAL will pack and send a HAL Wowl enter
4863 request message to the lower RIVA sub-system if DAL is
4864 in state STARTED.
4865
4866 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004867 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004868
4869 WDI_PostAssocReq must have been called.
4870
Jeff Johnsone7245742012-09-05 17:12:55 -07004871 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004873
Jeff Johnson295189b2012-06-20 16:38:30 -07004874 wdiWowlEnterReqCb: callback for passing back the
4875 response of the enter Wowl operation received from the
4876 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004877
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004879 callback
4880
Jeff Johnson295189b2012-06-20 16:38:30 -07004881 @see WDI_PostAssocReq
4882 @return Result of the function call
4883*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004884WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004885WDI_WowlEnterReq
4886(
4887 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4888 WDI_WowlEnterReqCb wdiWowlEnterCb,
4889 void* pUserData
4890)
4891{
4892 WDI_EventInfoType wdiEventData;
4893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4894
4895 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004896 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 ------------------------------------------------------------------------*/
4898 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4899 {
4900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4901 "WDI API call before module is initialized - Fail request");
4902
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 }
4905
4906 /*------------------------------------------------------------------------
4907 Fill in Event data and post to the Main FSM
4908 ------------------------------------------------------------------------*/
4909 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004911 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004912 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004913 wdiEventData.pUserData = pUserData;
4914
4915 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4916}/*WDI_WowlEnterReq*/
4917
4918/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004919 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 wants to exit the Wowl state. Upon the call of this API
4921 the WLAN DAL will pack and send a HAL Wowl exit request
4922 message to the lower RIVA sub-system if DAL is in state
4923 STARTED.
4924
4925 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004926 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004927
4928 WDI_WowlEnterReq must have been called.
4929
Jeff Johnsone7245742012-09-05 17:12:55 -07004930 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004932
Jeff Johnson295189b2012-06-20 16:38:30 -07004933 wdiWowlExitReqCb: callback for passing back the response
4934 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004935
Jeff Johnson295189b2012-06-20 16:38:30 -07004936 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004937 callback
4938
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 @see WDI_WowlEnterReq
4940 @return Result of the function call
4941*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004942WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004943WDI_WowlExitReq
4944(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004945 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004946 WDI_WowlExitReqCb wdiWowlExitCb,
4947 void* pUserData
4948)
4949{
4950 WDI_EventInfoType wdiEventData;
4951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4952
4953 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004954 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004955 ------------------------------------------------------------------------*/
4956 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4957 {
4958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4959 "WDI API call before module is initialized - Fail request");
4960
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004962 }
4963
4964 /*------------------------------------------------------------------------
4965 Fill in Event data and post to the Main FSM
4966 ------------------------------------------------------------------------*/
4967 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004968 wdiEventData.pEventData = pwdiWowlExitParams;
4969 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 wdiEventData.pUserData = pUserData;
4972
4973 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4974}/*WDI_WowlExitReq*/
4975
4976/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 the upper MAC wants to dynamically adjusts the listen
4979 interval based on the WLAN/MSM activity. Upon the call
4980 of this API the WLAN DAL will pack and send a HAL
4981 configure Apps Cpu Wakeup State request message to the
4982 lower RIVA sub-system.
4983
4984 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004985 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004986
Jeff Johnsone7245742012-09-05 17:12:55 -07004987
4988 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 Apps Cpu Wakeup State as specified by the
4990 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004991
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4993 back the response of the configure Apps Cpu Wakeup State
4994 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004995
Jeff Johnson295189b2012-06-20 16:38:30 -07004996 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 callback
4998
Jeff Johnson295189b2012-06-20 16:38:30 -07004999 @return Result of the function call
5000*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005001WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005002WDI_ConfigureAppsCpuWakeupStateReq
5003(
5004 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5005 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5006 void* pUserData
5007)
5008{
5009 WDI_EventInfoType wdiEventData;
5010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5011
5012 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005013 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005014 ------------------------------------------------------------------------*/
5015 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5016 {
5017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5018 "WDI API call before module is initialized - Fail request");
5019
Jeff Johnsone7245742012-09-05 17:12:55 -07005020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005021 }
5022
5023 /*------------------------------------------------------------------------
5024 Fill in Event data and post to the Main FSM
5025 ------------------------------------------------------------------------*/
5026 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005027 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5028 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5029 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005030 wdiEventData.pUserData = pUserData;
5031
5032 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5033}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5034/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005035 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005036 to to perform a flush operation on a given AC. Upon the
5037 call of this API the WLAN DAL will pack and send a HAL
5038 Flush AC request message to the lower RIVA sub-system if
5039 DAL is in state STARTED.
5040
5041 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005042 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005043
5044 WDI_AddBAReq must have been called.
5045
Jeff Johnsone7245742012-09-05 17:12:55 -07005046 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005047 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005048
Jeff Johnson295189b2012-06-20 16:38:30 -07005049 wdiFlushAcRspCb: callback for passing back the response
5050 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005051
Jeff Johnson295189b2012-06-20 16:38:30 -07005052 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005053 callback
5054
Jeff Johnson295189b2012-06-20 16:38:30 -07005055 @see WDI_AddBAReq
5056 @return Result of the function call
5057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005059WDI_FlushAcReq
5060(
5061 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5062 WDI_FlushAcRspCb wdiFlushAcRspCb,
5063 void* pUserData
5064)
5065{
5066 WDI_EventInfoType wdiEventData;
5067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5068
5069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 ------------------------------------------------------------------------*/
5072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5073 {
5074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5075 "WDI API call before module is initialized - Fail request");
5076
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 }
5079
5080 /*------------------------------------------------------------------------
5081 Fill in Event data and post to the Main FSM
5082 ------------------------------------------------------------------------*/
5083 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 wdiEventData.pEventData = pwdiFlushAcReqParams;
5085 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5086 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 wdiEventData.pUserData = pUserData;
5088
5089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5090
5091}/*WDI_FlushAcReq*/
5092
5093/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005095 wants to notify the lower mac on a BT AMP event. This is
5096 to inform BTC-SLM that some BT AMP event occurred. Upon
5097 the call of this API the WLAN DAL will pack and send a
5098 HAL BT AMP event request message to the lower RIVA
5099 sub-system if DAL is in state STARTED.
5100
5101 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005103
Jeff Johnsone7245742012-09-05 17:12:55 -07005104
5105 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005106 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005107
Jeff Johnson295189b2012-06-20 16:38:30 -07005108 wdiBtAmpEventRspCb: callback for passing back the
5109 response of the BT AMP event operation received from the
5110 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005111
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005113 callback
5114
Jeff Johnson295189b2012-06-20 16:38:30 -07005115 @return Result of the function call
5116*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005117WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005118WDI_BtAmpEventReq
5119(
5120 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5121 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5122 void* pUserData
5123)
5124{
5125 WDI_EventInfoType wdiEventData;
5126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5127
5128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005130 ------------------------------------------------------------------------*/
5131 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5132 {
5133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5134 "WDI API call before module is initialized - Fail request");
5135
Jeff Johnsone7245742012-09-05 17:12:55 -07005136 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005137 }
5138
5139 /*------------------------------------------------------------------------
5140 Fill in Event data and post to the Main FSM
5141 ------------------------------------------------------------------------*/
5142 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005143 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5144 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5145 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 wdiEventData.pUserData = pUserData;
5147
5148 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5149
5150}/*WDI_BtAmpEventReq*/
5151
Jeff Johnsone7245742012-09-05 17:12:55 -07005152#ifdef FEATURE_OEM_DATA_SUPPORT
5153/**
5154 @brief WDI_Start Oem Data Req will be called when the upper MAC
5155 wants to notify the lower mac on a oem data Req event.Upon
5156 the call of this API the WLAN DAL will pack and send a
5157 HAL OEM Data Req event request message to the lower RIVA
5158 sub-system if DAL is in state STARTED.
5159
5160 In state BUSY this request will be queued. Request won't
5161 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005162
5163
Jeff Johnsone7245742012-09-05 17:12:55 -07005164
5165 @param pwdiOemDataReqParams: the Oem Data Req as
5166 specified by the Device Interface
5167
5168 wdiStartOemDataRspCb: callback for passing back the
5169 response of the Oem Data Req received from the
5170 device
5171
5172 pUserData: user data will be passed back with the
5173 callback
5174
5175 @return Result of the function call
5176*/
5177WDI_Status
5178WDI_StartOemDataReq
5179(
5180 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5181 WDI_oemDataRspCb wdiOemDataRspCb,
5182 void* pUserData
5183)
5184{
5185 WDI_EventInfoType wdiEventData;
5186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5187
5188 /*------------------------------------------------------------------------
5189 Sanity Check
5190 ------------------------------------------------------------------------*/
5191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5192 {
5193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5194 "WDI API call before module is initialized - Fail request");
5195
5196 return WDI_STATUS_E_NOT_ALLOWED;
5197 }
5198
5199 /*------------------------------------------------------------------------
5200 Fill in Event data and post to the Main FSM
5201 ------------------------------------------------------------------------*/
5202 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5203 wdiEventData.pEventData = pwdiOemDataReqParams;
5204 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5205 wdiEventData.pCBfnc = wdiOemDataRspCb;
5206 wdiEventData.pUserData = pUserData;
5207
5208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5209
5210
5211}
5212
5213#endif
5214
5215
5216/*========================================================================
5217
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005219
Jeff Johnson295189b2012-06-20 16:38:30 -07005220==========================================================================*/
5221/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005222 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005223 the WLAN HW to change the current channel of operation.
5224 Upon the call of this API the WLAN DAL will pack and
5225 send a HAL Start request message to the lower RIVA
5226 sub-system if DAL is in state STARTED.
5227
5228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005230
5231 WDI_Start must have been called.
5232
Jeff Johnsone7245742012-09-05 17:12:55 -07005233 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005234 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005235
Jeff Johnson295189b2012-06-20 16:38:30 -07005236 wdiSwitchChRspCb: callback for passing back the response
5237 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005238
Jeff Johnson295189b2012-06-20 16:38:30 -07005239 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005240 callback
5241
Jeff Johnson295189b2012-06-20 16:38:30 -07005242 @see WDI_Start
5243 @return Result of the function call
5244*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005246WDI_SwitchChReq
5247(
5248 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5249 WDI_SwitchChRspCb wdiSwitchChRspCb,
5250 void* pUserData
5251)
5252{
5253 WDI_EventInfoType wdiEventData;
5254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5255
5256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005258 ------------------------------------------------------------------------*/
5259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5260 {
5261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5262 "WDI API call before module is initialized - Fail request");
5263
Jeff Johnsone7245742012-09-05 17:12:55 -07005264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005265 }
5266
5267 /*------------------------------------------------------------------------
5268 Fill in Event data and post to the Main FSM
5269 ------------------------------------------------------------------------*/
5270 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005271 wdiEventData.pEventData = pwdiSwitchChReqParams;
5272 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5273 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 wdiEventData.pUserData = pUserData;
5275
5276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5277
5278}/*WDI_SwitchChReq*/
5279
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005280/**
5281 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5282 the WLAN HW to change the current channel of operation.
5283 Upon the call of this API the WLAN DAL will pack and
5284 send a HAL Start request message to the lower RIVA
5285 sub-system if DAL is in state STARTED.
5286 This request message also includes source of channel switch,
5287 like CSA,
5288
5289 In state BUSY this request will be queued. Request won't
5290 be allowed in any other state.
5291
5292 WDI_Start must have been called.
5293
5294 @param wdiSwitchChReqParams: the switch ch parameters as
5295 specified by the Device Interface
5296
5297 wdiSwitchChRspCb: callback for passing back the response
5298 of the switch ch operation received from the device
5299
5300 pUserData: user data will be passed back with the
5301 callback
5302
5303 @see WDI_Start
5304 @return Result of the function call
5305*/
5306WDI_Status
5307WDI_SwitchChReq_V1
5308(
5309 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5310 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5311 void* pUserData
5312)
5313{
5314 WDI_EventInfoType wdiEventData;
5315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5317 "WDI API call WDI_SwitchChReq_V1");
5318 /*------------------------------------------------------------------------
5319 Sanity Check
5320 ------------------------------------------------------------------------*/
5321 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5322 {
5323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5324 "WDI API call before module is initialized - Fail request");
5325
5326 return WDI_STATUS_E_NOT_ALLOWED;
5327 }
5328
5329 /*------------------------------------------------------------------------
5330 Fill in Event data and post to the Main FSM
5331 ------------------------------------------------------------------------*/
5332 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5333 wdiEventData.pEventData = pwdiSwitchChReqParams;
5334 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5335 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5336 wdiEventData.pUserData = pUserData;
5337
5338 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5339
5340}/*WDI_SwitchChReq_V1*/
5341
Jeff Johnson295189b2012-06-20 16:38:30 -07005342
5343/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 wishes to add or update a STA in HW. Upon the call of
5346 this API the WLAN DAL will pack and send a HAL Start
5347 message request message to the lower RIVA sub-system if
5348 DAL is in state STARTED.
5349
5350 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005352
5353 WDI_Start must have been called.
5354
Jeff Johnsone7245742012-09-05 17:12:55 -07005355 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005356 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005357
Jeff Johnson295189b2012-06-20 16:38:30 -07005358 wdiConfigSTARspCb: callback for passing back the
5359 response of the config STA operation received from the
5360 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005361
Jeff Johnson295189b2012-06-20 16:38:30 -07005362 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 callback
5364
Jeff Johnson295189b2012-06-20 16:38:30 -07005365 @see WDI_Start
5366 @return Result of the function call
5367*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005368WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005369WDI_ConfigSTAReq
5370(
5371 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5372 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5373 void* pUserData
5374)
5375{
5376 WDI_EventInfoType wdiEventData;
5377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5378
5379 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005380 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 ------------------------------------------------------------------------*/
5382 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5383 {
5384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5385 "WDI API call before module is initialized - Fail request");
5386
Jeff Johnsone7245742012-09-05 17:12:55 -07005387 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 }
5389
5390 /*------------------------------------------------------------------------
5391 Fill in Event data and post to the Main FSM
5392 ------------------------------------------------------------------------*/
5393 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5395 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5396 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005397 wdiEventData.pUserData = pUserData;
5398
5399 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5400
5401}/*WDI_ConfigSTAReq*/
5402
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005403 /**
5404 @brief WDI_UpdateChannelReq will be called when the upper MAC
5405 wants to update the channel list on change in country code.
5406
5407 In state BUSY this request will be queued. Request won't
5408 be allowed in any other state.
5409
5410 WDI_UpdateChannelReq must have been called.
5411
5412 @param wdiUpdateChannelReqParams: the updated channel parameters
5413 as specified by the Device Interface
5414
5415 wdiUpdateChannelRspCb: callback for passing back the
5416 response of the update channel operation received from
5417 the device
5418
5419 pUserData: user data will be passed back with the
5420 callback
5421
5422 @return Result of the function call
5423*/
5424WDI_Status
5425WDI_UpdateChannelReq
5426(
5427 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5428 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5429 void* pUserData
5430)
5431{
5432 WDI_EventInfoType wdiEventData = {{0}};
5433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5434
5435 /*------------------------------------------------------------------------
5436 Sanity Check
5437 ------------------------------------------------------------------------*/
5438 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5439 {
5440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5441 "WDI API call before module is initialized - Fail request");
5442
5443 return WDI_STATUS_E_NOT_ALLOWED;
5444 }
5445
5446 /*------------------------------------------------------------------------
5447 Fill in Event data and post to the Main FSM
5448 ------------------------------------------------------------------------*/
5449 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5450 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5451 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5452 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5453 wdiEventData.pUserData = pUserData;
5454
5455 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5456
5457}/*WDI_UpdateChannelReq*/
5458
Jeff Johnson295189b2012-06-20 16:38:30 -07005459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005460 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 wants to change the state of an ongoing link. Upon the
5462 call of this API the WLAN DAL will pack and send a HAL
5463 Start message request message to the lower RIVA
5464 sub-system if DAL is in state STARTED.
5465
5466 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005467 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005468
5469 WDI_JoinStartReq must have been called.
5470
Jeff Johnsone7245742012-09-05 17:12:55 -07005471 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005472 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005473
Jeff Johnson295189b2012-06-20 16:38:30 -07005474 wdiSetLinkStateRspCb: callback for passing back the
5475 response of the set link state operation received from
5476 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005477
Jeff Johnson295189b2012-06-20 16:38:30 -07005478 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005479 callback
5480
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 @see WDI_JoinStartReq
5482 @return Result of the function call
5483*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005485WDI_SetLinkStateReq
5486(
5487 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5488 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5489 void* pUserData
5490)
5491{
5492 WDI_EventInfoType wdiEventData;
5493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5494
5495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005497 ------------------------------------------------------------------------*/
5498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5499 {
5500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5501 "WDI API call before module is initialized - Fail request");
5502
Jeff Johnsone7245742012-09-05 17:12:55 -07005503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 }
5505
5506 /*------------------------------------------------------------------------
5507 Fill in Event data and post to the Main FSM
5508 ------------------------------------------------------------------------*/
5509 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005510 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5511 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5512 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005513 wdiEventData.pUserData = pUserData;
5514
5515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5516
5517}/*WDI_SetLinkStateReq*/
5518
5519
5520/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005521 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005522 to get statistics (MIB counters) from the device. Upon
5523 the call of this API the WLAN DAL will pack and send a
5524 HAL Start request message to the lower RIVA sub-system
5525 if DAL is in state STARTED.
5526
5527 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005528 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005529
5530 WDI_Start must have been called.
5531
Jeff Johnsone7245742012-09-05 17:12:55 -07005532 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005533 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005534
Jeff Johnson295189b2012-06-20 16:38:30 -07005535 wdiGetStatsRspCb: callback for passing back the response
5536 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005537
Jeff Johnson295189b2012-06-20 16:38:30 -07005538 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005539 callback
5540
Jeff Johnson295189b2012-06-20 16:38:30 -07005541 @see WDI_Start
5542 @return Result of the function call
5543*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005544WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005545WDI_GetStatsReq
5546(
5547 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5548 WDI_GetStatsRspCb wdiGetStatsRspCb,
5549 void* pUserData
5550)
5551{
5552 WDI_EventInfoType wdiEventData;
5553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5554
5555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005556 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005557 ------------------------------------------------------------------------*/
5558 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5559 {
5560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5561 "WDI API call before module is initialized - Fail request");
5562
Jeff Johnsone7245742012-09-05 17:12:55 -07005563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 }
5565
5566 /*------------------------------------------------------------------------
5567 Fill in Event data and post to the Main FSM
5568 ------------------------------------------------------------------------*/
5569 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 wdiEventData.pEventData = pwdiGetStatsReqParams;
5571 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5572 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005573 wdiEventData.pUserData = pUserData;
5574
5575 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5576
5577}/*WDI_GetStatsReq*/
5578
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005579#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005580/**
5581 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5582 to get roam rssi from the device. Upon
5583 the call of this API the WLAN DAL will pack and send a
5584 HAL Start request message to the lower RIVA sub-system
5585 if DAL is in state STARTED.
5586
5587 In state BUSY this request will be queued. Request won't
5588 be allowed in any other state.
5589
5590 WDI_Start must have been called.
5591
5592 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5593 specified by the Device Interface
5594
5595 wdiGetRoamRssiRspCb: callback for passing back the response
5596 of the get stats operation received from the device
5597
5598 pUserData: user data will be passed back with the
5599 callback
5600
5601 @see WDI_Start
5602 @return Result of the function call
5603*/
5604WDI_Status
5605WDI_GetRoamRssiReq
5606(
5607 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5608 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5609 void* pUserData
5610)
5611{
5612 WDI_EventInfoType wdiEventData;
5613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5614
5615 /*------------------------------------------------------------------------
5616 Sanity Check
5617 ------------------------------------------------------------------------*/
5618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5619 {
5620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5621 "WDI API call before module is initialized - Fail request");
5622
5623 return WDI_STATUS_E_NOT_ALLOWED;
5624 }
5625 /*------------------------------------------------------------------------
5626 Fill in Event data and post to the Main FSM
5627 ------------------------------------------------------------------------*/
5628 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5629 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5630 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5631 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5632 wdiEventData.pUserData = pUserData;
5633
5634 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5635
5636}/*WDI_GetRoamRssiReq*/
5637#endif
5638
Jeff Johnson295189b2012-06-20 16:38:30 -07005639
5640/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005641 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005642 it wishes to change the configuration of the WLAN
5643 Device. Upon the call of this API the WLAN DAL will pack
5644 and send a HAL Update CFG request message to the lower
5645 RIVA sub-system if DAL is in state STARTED.
5646
5647 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005648 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005649
5650 WDI_Start must have been called.
5651
Jeff Johnsone7245742012-09-05 17:12:55 -07005652 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005653 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005654
Jeff Johnson295189b2012-06-20 16:38:30 -07005655 wdiUpdateCfgsRspCb: callback for passing back the
5656 response of the update cfg operation received from the
5657 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005658
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005660 callback
5661
Jeff Johnson295189b2012-06-20 16:38:30 -07005662 @see WDI_Start
5663 @return Result of the function call
5664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005666WDI_UpdateCfgReq
5667(
5668 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5669 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5670 void* pUserData
5671)
5672{
5673 WDI_EventInfoType wdiEventData;
5674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5675
5676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 ------------------------------------------------------------------------*/
5679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5680 {
5681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5682 "WDI API call before module is initialized - Fail request");
5683
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 }
5686
5687 /*------------------------------------------------------------------------
5688 Fill in Event data and post to the Main FSM
5689 ------------------------------------------------------------------------*/
5690 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005691 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5692 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5693 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005694 wdiEventData.pUserData = pUserData;
5695
5696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5697
5698}/*WDI_UpdateCfgReq*/
5699
5700
5701
5702/**
5703 @brief WDI_AddBAReq will be called when the upper MAC has setup
5704 successfully a BA session and needs to notify the HW for
5705 the appropriate settings to take place. Upon the call of
5706 this API the WLAN DAL will pack and send a HAL Add BA
5707 request message to the lower RIVA sub-system if DAL is
5708 in state STARTED.
5709
5710 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005712
5713 WDI_PostAssocReq must have been called.
5714
5715 @param wdiAddBAReqParams: the add BA parameters as specified by
5716 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005717
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 wdiAddBARspCb: callback for passing back the response of
5719 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005720
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005722 callback
5723
Jeff Johnson295189b2012-06-20 16:38:30 -07005724 @see WDI_PostAssocReq
5725 @return Result of the function call
5726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005728WDI_AddBAReq
5729(
5730 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5731 WDI_AddBARspCb wdiAddBARspCb,
5732 void* pUserData
5733)
5734{
5735 WDI_EventInfoType wdiEventData;
5736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5737
5738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 ------------------------------------------------------------------------*/
5741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5742 {
5743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5744 "WDI API call before module is initialized - Fail request");
5745
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005747 }
5748
5749 /*------------------------------------------------------------------------
5750 Fill in Event data and post to the Main FSM
5751 ------------------------------------------------------------------------*/
5752 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005753 wdiEventData.pEventData = pwdiAddBAReqParams;
5754 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5755 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 wdiEventData.pUserData = pUserData;
5757
5758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5759
5760}/*WDI_AddBAReq*/
5761
5762
5763/**
5764 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5765 successfully a BA session and needs to notify the HW for
5766 the appropriate settings to take place. Upon the call of
5767 this API the WLAN DAL will pack and send a HAL Add BA
5768 request message to the lower RIVA sub-system if DAL is
5769 in state STARTED.
5770
5771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005773
5774 WDI_PostAssocReq must have been called.
5775
5776 @param wdiAddBAReqParams: the add BA parameters as specified by
5777 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005778
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 wdiAddBARspCb: callback for passing back the response of
5780 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005781
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005783 callback
5784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 @see WDI_PostAssocReq
5786 @return Result of the function call
5787*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005788WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005789WDI_TriggerBAReq
5790(
5791 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5792 WDI_TriggerBARspCb wdiTriggerBARspCb,
5793 void* pUserData
5794)
5795{
5796 WDI_EventInfoType wdiEventData;
5797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5798
5799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005801 ------------------------------------------------------------------------*/
5802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5803 {
5804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5805 "WDI API call before module is initialized - Fail request");
5806
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005808 }
5809
5810 /*------------------------------------------------------------------------
5811 Fill in Event data and post to the Main FSM
5812 ------------------------------------------------------------------------*/
5813 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5815 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5816 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005817 wdiEventData.pUserData = pUserData;
5818
5819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5820
5821}/*WDI_AddBAReq*/
5822
5823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005824 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005825 wishes to update any of the Beacon parameters used by HW.
5826 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5827 message to the lower RIVA sub-system if DAL is in state
5828 STARTED.
5829
5830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005832
5833 WDI_PostAssocReq must have been called.
5834
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005837
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 wdiUpdateBeaconParamsRspCb: callback for passing back the
5839 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005840
Jeff Johnson295189b2012-06-20 16:38:30 -07005841 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005842 callback
5843
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 @see WDI_PostAssocReq
5845 @return Result of the function call
5846*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005847WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005848WDI_UpdateBeaconParamsReq
5849(
5850 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5851 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5852 void* pUserData
5853)
5854{
5855 WDI_EventInfoType wdiEventData;
5856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5857
5858 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005859 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005860 ------------------------------------------------------------------------*/
5861 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5862 {
5863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5864 "WDI API call before module is initialized - Fail request");
5865
Jeff Johnsone7245742012-09-05 17:12:55 -07005866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005867 }
5868
5869 /*------------------------------------------------------------------------
5870 Fill in Event data and post to the Main FSM
5871 ------------------------------------------------------------------------*/
5872 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005873 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5874 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5875 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005876 wdiEventData.pUserData = pUserData;
5877
5878 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5879
5880}/*WDI_UpdateBeaconParamsReq*/
5881
5882/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005883 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 wishes to update the Beacon template used by HW.
5885 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5886 message to the lower RIVA sub-system if DAL is in state
5887 STARTED.
5888
5889 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005890 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005891
5892 WDI_PostAssocReq must have been called.
5893
Jeff Johnsone7245742012-09-05 17:12:55 -07005894 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005895 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005896
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 wdiSendBeaconParamsRspCb: callback for passing back the
5898 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005899
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005901 callback
5902
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 @see WDI_PostAssocReq
5904 @return Result of the function call
5905*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005906WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005907WDI_SendBeaconParamsReq
5908(
5909 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5910 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5911 void* pUserData
5912)
5913{
5914 WDI_EventInfoType wdiEventData;
5915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5916
5917 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005918 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 ------------------------------------------------------------------------*/
5920 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5921 {
5922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5923 "WDI API call before module is initialized - Fail request");
5924
Jeff Johnsone7245742012-09-05 17:12:55 -07005925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005926 }
5927
5928 /*------------------------------------------------------------------------
5929 Fill in Event data and post to the Main FSM
5930 ------------------------------------------------------------------------*/
5931 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005932 wdiEventData.pEventData = pwdiSendBeaconParams;
5933 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5934 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005935 wdiEventData.pUserData = pUserData;
5936
5937 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5938
5939}/*WDI_SendBeaconParamsReq*/
5940
5941/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005942 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 upper MAC wants to update the probe response template to
5944 be transmitted as Soft AP
5945 Upon the call of this API the WLAN DAL will
5946 pack and send the probe rsp template message to the
5947 lower RIVA sub-system if DAL is in state STARTED.
5948
5949 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005950 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005951
5952
Jeff Johnsone7245742012-09-05 17:12:55 -07005953 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005954 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005955
Jeff Johnson295189b2012-06-20 16:38:30 -07005956 wdiSendBeaconParamsRspCb: callback for passing back the
5957 response of the Send Beacon Params operation received
5958 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005959
Jeff Johnson295189b2012-06-20 16:38:30 -07005960 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005961 callback
5962
Jeff Johnson295189b2012-06-20 16:38:30 -07005963 @see WDI_AddBAReq
5964 @return Result of the function call
5965*/
5966
Jeff Johnsone7245742012-09-05 17:12:55 -07005967WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005968WDI_UpdateProbeRspTemplateReq
5969(
5970 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5971 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5972 void* pUserData
5973)
5974{
5975 WDI_EventInfoType wdiEventData;
5976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5977
5978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005980 ------------------------------------------------------------------------*/
5981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5982 {
5983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5984 "WDI API call before module is initialized - Fail request");
5985
Jeff Johnsone7245742012-09-05 17:12:55 -07005986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005987 }
5988
5989 /*------------------------------------------------------------------------
5990 Fill in Event data and post to the Main FSM
5991 ------------------------------------------------------------------------*/
5992 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005993 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5994 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5995 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005996 wdiEventData.pUserData = pUserData;
5997
5998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5999
6000}/*WDI_UpdateProbeRspTemplateReq*/
6001
6002/**
6003 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6004 to the NV memory.
6005
6006
6007 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6008 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006009
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 wdiNvDownloadRspCb: callback for passing back the response of
6011 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006012
Jeff Johnson295189b2012-06-20 16:38:30 -07006013 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006014 callback
6015
Jeff Johnson295189b2012-06-20 16:38:30 -07006016 @see WDI_PostAssocReq
6017 @return Result of the function call
6018*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006019WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006020WDI_NvDownloadReq
6021(
6022 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6023 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6024 void* pUserData
6025)
6026{
6027 WDI_EventInfoType wdiEventData;
6028
6029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006030 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 ------------------------------------------------------------------------*/
6032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6033 {
6034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6035 "WDI API call before module is initialized - Fail request");
6036
Jeff Johnsone7245742012-09-05 17:12:55 -07006037 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006038 }
6039
6040 /*------------------------------------------------------------------------
6041 Fill in Event data and post to the Main FSM
6042 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006043 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6044 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6045 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6046 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 wdiEventData.pUserData = pUserData;
6048
6049 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6050
6051}/*WDI_NVDownloadReq*/
6052
Jeff Johnson295189b2012-06-20 16:38:30 -07006053/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006054 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 upper MAC wants to send Notice of Absence
6056 Upon the call of this API the WLAN DAL will
6057 pack and send the probe rsp template message to the
6058 lower RIVA sub-system if DAL is in state STARTED.
6059
6060 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006061 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006062
6063
Jeff Johnsone7245742012-09-05 17:12:55 -07006064 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006065 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006066
Jeff Johnson295189b2012-06-20 16:38:30 -07006067 wdiSendBeaconParamsRspCb: callback for passing back the
6068 response of the Send Beacon Params operation received
6069 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006070
Jeff Johnson295189b2012-06-20 16:38:30 -07006071 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006072 callback
6073
Jeff Johnson295189b2012-06-20 16:38:30 -07006074 @see WDI_AddBAReq
6075 @return Result of the function call
6076*/
6077WDI_Status
6078WDI_SetP2PGONOAReq
6079(
6080 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6081 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6082 void* pUserData
6083)
6084{
6085 WDI_EventInfoType wdiEventData;
6086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6087
6088 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006089 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006090 ------------------------------------------------------------------------*/
6091 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6092 {
6093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6094 "WDI API call before module is initialized - Fail request");
6095
Jeff Johnsone7245742012-09-05 17:12:55 -07006096 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 }
6098
6099 /*------------------------------------------------------------------------
6100 Fill in Event data and post to the Main FSM
6101 ------------------------------------------------------------------------*/
6102 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006103 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6104 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6105 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006106 wdiEventData.pUserData = pUserData;
6107
6108 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6109
6110}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006111
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306112#ifdef FEATURE_WLAN_TDLS
6113/**
6114 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6115 upper MAC wants to send TDLS Link Establish Request Parameters
6116 Upon the call of this API the WLAN DAL will
6117 pack and send the TDLS Link Establish Request message to the
6118 lower RIVA sub-system if DAL is in state STARTED.
6119
6120 In state BUSY this request will be queued. Request won't
6121 be allowed in any other state.
6122
6123
6124 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6125 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6126
6127 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6128 response of the TDLS Link Establish request received
6129 from the device
6130
6131 pUserData: user data will be passed back with the
6132 callback
6133
6134 @see
6135 @return Result of the function call
6136*/
6137WDI_Status
6138WDI_SetTDLSLinkEstablishReq
6139(
6140 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6141 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6142 void* pUserData
6143)
6144{
6145 WDI_EventInfoType wdiEventData;
6146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6147
6148 /*------------------------------------------------------------------------
6149 Sanity Check
6150 ------------------------------------------------------------------------*/
6151 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6152 {
6153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6154 "WDI API call before module is initialized - Fail request");
6155
6156 return WDI_STATUS_E_NOT_ALLOWED;
6157 }
6158
6159 /*------------------------------------------------------------------------
6160 Fill in Event data and post to the Main FSM
6161 ------------------------------------------------------------------------*/
6162 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6163 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6164 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6165 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6166 wdiEventData.pUserData = pUserData;
6167
6168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6169
6170}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306171
6172//tdlsoffchan
6173/**
6174 @brief WDI_SetTDLSChanSwitchReq will be called when the
6175 upper MAC wants to send TDLS Chan Switch Request Parameters
6176 Upon the call of this API the WLAN DAL will
6177 pack and send the TDLS Link Establish Request message to the
6178 lower RIVA sub-system if DAL is in state STARTED.
6179
6180 In state BUSY this request will be queued. Request won't
6181 be allowed in any other state.
6182
6183
6184 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6185 for Link Establishment (Used for TDLS Off Channel ...)
6186
6187 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6188 response of the TDLS Chan Switch request received
6189 from the device
6190
6191 pUserData: user data will be passed back with the
6192 callback
6193
6194 @see
6195 @return Result of the function call
6196*/
6197WDI_Status
6198WDI_SetTDLSChanSwitchReq
6199(
6200 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6201 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6202 void* pUserData
6203)
6204{
6205 WDI_EventInfoType wdiEventData;
6206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6207
6208 /*------------------------------------------------------------------------
6209 Sanity Check
6210 ------------------------------------------------------------------------*/
6211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6212 {
6213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6214 "WDI API call before module is initialized - Fail request");
6215
6216 return WDI_STATUS_E_NOT_ALLOWED;
6217 }
6218
6219 /*------------------------------------------------------------------------
6220 Fill in Event data and post to the Main FSM
6221 ------------------------------------------------------------------------*/
6222 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6223 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6224 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6225 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6226 wdiEventData.pUserData = pUserData;
6227
6228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6229
6230}/*WDI_SetTDLSChanSwitchReq*/
6231
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306232#endif
6233
Jeff Johnson295189b2012-06-20 16:38:30 -07006234/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006235 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006236 UMAC wanted to add STA self while opening any new session
6237 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006238 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006239
6240
Jeff Johnsone7245742012-09-05 17:12:55 -07006241 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006242 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006243
Jeff Johnson295189b2012-06-20 16:38:30 -07006244 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006245 callback
6246
6247 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006248 @return Result of the function call
6249*/
6250WDI_Status
6251WDI_AddSTASelfReq
6252(
6253 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6254 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6255 void* pUserData
6256)
6257{
6258 WDI_EventInfoType wdiEventData;
6259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6260
6261 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006262 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 ------------------------------------------------------------------------*/
6264 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6265 {
6266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6267 "WDI API call before module is initialized - Fail request");
6268
Jeff Johnsone7245742012-09-05 17:12:55 -07006269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006270 }
6271
6272 /*------------------------------------------------------------------------
6273 Fill in Event data and post to the Main FSM
6274 ------------------------------------------------------------------------*/
6275 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006276 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6277 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6278 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006279 wdiEventData.pUserData = pUserData;
6280
6281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6282
6283}/*WDI_AddSTASelfReq*/
6284
6285
Jeff Johnsone7245742012-09-05 17:12:55 -07006286#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006287/**
6288 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6289 the device of a successful add TSpec negotiation. HW
6290 needs to receive the TSpec Info from the UMAC in order
6291 to configure properly the QoS data traffic. Upon the
6292 call of this API the WLAN DAL will pack and send a HAL
6293 Add TS request message to the lower RIVA sub-system if
6294 DAL is in state STARTED.
6295
6296 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006297 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006298
6299 WDI_PostAssocReq must have been called.
6300
6301 @param wdiAddTsReqParams: the add TS parameters as specified by
6302 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006303
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 wdiAddTsRspCb: callback for passing back the response of
6305 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006306
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006308 callback
6309
Jeff Johnson295189b2012-06-20 16:38:30 -07006310 @see WDI_PostAssocReq
6311 @return Result of the function call
6312*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006313WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006314WDI_AggrAddTSReq
6315(
6316 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6317 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6318 void* pUserData
6319)
6320{
6321 WDI_EventInfoType wdiEventData;
6322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6323
6324 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006325 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006326 ------------------------------------------------------------------------*/
6327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6328 {
6329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6330 "WDI API call before module is initialized - Fail request");
6331
Jeff Johnsone7245742012-09-05 17:12:55 -07006332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 }
6334
6335 /*------------------------------------------------------------------------
6336 Fill in Event data and post to the Main FSM
6337 ------------------------------------------------------------------------*/
6338 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006339 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6340 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6341 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006342 wdiEventData.pUserData = pUserData;
6343
6344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6345
6346}/*WDI_AggrAddTSReq*/
6347
6348#endif /* WLAN_FEATURE_VOWIFI_11R */
6349
Jeff Johnson295189b2012-06-20 16:38:30 -07006350/**
6351 @brief WDI_FTMCommandReq
6352 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006353
6354 @param ftmCommandReq: FTM Command Body
6355 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006357
Jeff Johnson295189b2012-06-20 16:38:30 -07006358 @see
6359 @return Result of the function call
6360*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006361WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006362WDI_FTMCommandReq
6363(
6364 WDI_FTMCommandReqType *ftmCommandReq,
6365 WDI_FTMCommandRspCb ftmCommandRspCb,
6366 void *pUserData
6367)
6368{
6369 WDI_EventInfoType wdiEventData;
6370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6371
6372 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006373 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006374 ------------------------------------------------------------------------*/
6375 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6376 {
6377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6378 "WDI API call before module is initialized - Fail request");
6379
Jeff Johnsone7245742012-09-05 17:12:55 -07006380 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 }
6382
6383 /*------------------------------------------------------------------------
6384 Fill in Event data and post to the Main FSM
6385 ------------------------------------------------------------------------*/
6386 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6387 wdiEventData.pEventData = (void *)ftmCommandReq;
6388 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6389 wdiEventData.pCBfnc = ftmCommandRspCb;
6390 wdiEventData.pUserData = pUserData;
6391
6392 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6393}
Jeff Johnson295189b2012-06-20 16:38:30 -07006394/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006395 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006396
6397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006399
6400
6401 @param pwdiResumeReqParams: as specified by
6402 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 wdiResumeReqRspCb: callback for passing back the response of
6405 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006406
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006408 callback
6409
6410 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006411 @return Result of the function call
6412*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006413WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006414WDI_HostResumeReq
6415(
6416 WDI_ResumeParamsType* pwdiResumeReqParams,
6417 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6418 void* pUserData
6419)
6420{
6421 WDI_EventInfoType wdiEventData;
6422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6423
6424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006425 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006426 ------------------------------------------------------------------------*/
6427 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6428 {
6429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6430 "WDI API call before module is initialized - Fail request");
6431
Jeff Johnsone7245742012-09-05 17:12:55 -07006432 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 }
6434
6435 /*------------------------------------------------------------------------
6436 Fill in Event data and post to the Main FSM
6437 ------------------------------------------------------------------------*/
6438 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006439 wdiEventData.pEventData = pwdiResumeReqParams;
6440 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6441 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 wdiEventData.pUserData = pUserData;
6443
6444 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6445
6446}/*WDI_HostResumeReq*/
6447
6448/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006449 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006450
6451 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006452 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006453
6454
6455 @param pwdiDelStaSelfReqParams: as specified by
6456 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006457
Jeff Johnson295189b2012-06-20 16:38:30 -07006458 wdiDelStaSelfRspCb: callback for passing back the response of
6459 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006460
Jeff Johnson295189b2012-06-20 16:38:30 -07006461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006462 callback
6463
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 @see WDI_PostAssocReq
6465 @return Result of the function call
6466*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006468WDI_DelSTASelfReq
6469(
6470 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6471 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6472 void* pUserData
6473)
6474{
6475 WDI_EventInfoType wdiEventData;
6476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6477
6478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 ------------------------------------------------------------------------*/
6481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6482 {
6483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6484 "WDI API call before module is initialized - Fail request");
6485
Jeff Johnsone7245742012-09-05 17:12:55 -07006486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006487 }
6488
6489 /*------------------------------------------------------------------------
6490 Fill in Event data and post to the Main FSM
6491 ------------------------------------------------------------------------*/
6492 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006493 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6494 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6495 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006496 wdiEventData.pUserData = pUserData;
6497
6498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6499
6500}/*WDI_AggrAddTSReq*/
6501
6502/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006503 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6504 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 Upon the call of this API the WLAN DAL will pack
6506 and send a HAL Set Tx Per Tracking request message to the
6507 lower RIVA sub-system if DAL is in state STARTED.
6508
6509 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006510 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006511
Jeff Johnsone7245742012-09-05 17:12:55 -07006512 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006514
Jeff Johnson295189b2012-06-20 16:38:30 -07006515 pwdiSetTxPerTrackingRspCb: callback for passing back the
6516 response of the set Tx PER Tracking configurations operation received
6517 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006518
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 callback
6521
Jeff Johnson295189b2012-06-20 16:38:30 -07006522 @return Result of the function call
6523*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006525WDI_SetTxPerTrackingReq
6526(
6527 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6528 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6529 void* pUserData
6530)
6531{
6532 WDI_EventInfoType wdiEventData;
6533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6534
6535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006537 ------------------------------------------------------------------------*/
6538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6539 {
6540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6541 "WDI API call before module is initialized - Fail request");
6542
Jeff Johnsone7245742012-09-05 17:12:55 -07006543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 }
6545
6546 /*------------------------------------------------------------------------
6547 Fill in Event data and post to the Main FSM
6548 ------------------------------------------------------------------------*/
6549 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006550 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006551 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006552 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006553 wdiEventData.pUserData = pUserData;
6554
6555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6556
6557}/*WDI_SetTxPerTrackingReq*/
6558
6559/**
6560 @brief WDI_SetTmLevelReq
6561 If HW Thermal condition changed, driver should react based on new
6562 HW thermal condition.
6563
6564 @param pwdiSetTmLevelReq: New thermal condition information
6565
6566 pwdiSetTmLevelRspCb: callback
6567
6568 usrData: user data will be passed back with the
6569 callback
6570
6571 @return Result of the function call
6572*/
6573WDI_Status
6574WDI_SetTmLevelReq
6575(
6576 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6577 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6578 void *usrData
6579)
6580{
6581 WDI_EventInfoType wdiEventData;
6582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6583
6584 /*------------------------------------------------------------------------
6585 Sanity Check
6586 ------------------------------------------------------------------------*/
6587 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6588 {
6589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6590 "WDI API call before module is initialized - Fail request");
6591
6592 return WDI_STATUS_E_NOT_ALLOWED;
6593 }
6594
6595 /*------------------------------------------------------------------------
6596 Fill in Event data and post to the Main FSM
6597 ------------------------------------------------------------------------*/
6598 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6599 wdiEventData.pEventData = pwdiSetTmLevelReq;
6600 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6601 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6602 wdiEventData.pUserData = usrData;
6603
6604 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6605}
6606
6607/**
6608 @brief WDI_HostSuspendInd
6609
6610 Suspend Indication from the upper layer will be sent
6611 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006612
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006614
6615 @see
6616
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 @return Status of the request
6618*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006619WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006620WDI_HostSuspendInd
6621(
6622 WDI_SuspendParamsType* pwdiSuspendIndParams
6623)
6624{
6625
6626 WDI_EventInfoType wdiEventData;
6627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6628
6629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006630 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006631 ------------------------------------------------------------------------*/
6632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6633 {
6634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6635 "WDI API call before module is initialized - Fail request");
6636
Jeff Johnsone7245742012-09-05 17:12:55 -07006637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006638 }
6639
6640 /*------------------------------------------------------------------------
6641 Fill in Event data and post to the Main FSM
6642 ------------------------------------------------------------------------*/
6643 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006644 wdiEventData.pEventData = pwdiSuspendIndParams;
6645 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6646 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 wdiEventData.pUserData = NULL;
6648
6649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6650
6651}/*WDI_HostSuspendInd*/
6652
6653/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006654 @brief WDI_TrafficStatsInd
6655 Traffic Stats from the upper layer will be sent
6656 down to HAL
6657
6658 @param WDI_TrafficStatsIndType
6659
6660 @see
6661
6662 @return Status of the request
6663*/
6664WDI_Status
6665WDI_TrafficStatsInd
6666(
6667 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6668)
6669{
6670
6671 WDI_EventInfoType wdiEventData;
6672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6673
6674 /*------------------------------------------------------------------------
6675 Sanity Check
6676 ------------------------------------------------------------------------*/
6677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6678 {
6679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6680 "WDI API call before module is initialized - Fail request");
6681
6682 return WDI_STATUS_E_NOT_ALLOWED;
6683 }
6684
6685 /*------------------------------------------------------------------------
6686 Fill in Event data and post to the Main FSM
6687 ------------------------------------------------------------------------*/
6688 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6689 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6690 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6691 wdiEventData.pCBfnc = NULL;
6692 wdiEventData.pUserData = NULL;
6693
6694 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6695
6696}/*WDI_TrafficStatsInd*/
6697
Chet Lanctot186b5732013-03-18 10:26:30 -07006698#ifdef WLAN_FEATURE_11W
6699/**
6700 @brief WDI_ExcludeUnencryptedInd
6701 Register with HAL to receive/drop unencrypted frames
6702
6703 @param WDI_ExcludeUnencryptIndType
6704
6705 @see
6706
6707 @return Status of the request
6708*/
6709WDI_Status
6710WDI_ExcludeUnencryptedInd
6711(
6712 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6713)
6714{
6715
6716 WDI_EventInfoType wdiEventData;
6717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6718
6719 /*------------------------------------------------------------------------
6720 Sanity Check
6721 ------------------------------------------------------------------------*/
6722 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6723 {
6724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6725 "WDI API call before module is initialized - Fail request");
6726
6727 return WDI_STATUS_E_NOT_ALLOWED;
6728 }
6729
6730 /*------------------------------------------------------------------------
6731 Fill in Event data and post to the Main FSM
6732 ------------------------------------------------------------------------*/
6733 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6734 wdiEventData.pEventData = pWdiExcUnencParams;
6735 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6736 wdiEventData.pCBfnc = NULL;
6737 wdiEventData.pUserData = NULL;
6738
6739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6740
6741}/*WDI_TrafficStatsInd*/
6742#endif
6743
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006744/**
Yue Mab9c86f42013-08-14 15:59:08 -07006745 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6746
6747 @param addPeriodicTxPtrnParams: Add Pattern parameters
6748
6749 @see
6750
6751 @return Status of the request
6752*/
6753WDI_Status
6754WDI_AddPeriodicTxPtrnInd
6755(
6756 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6757)
6758{
6759 WDI_EventInfoType wdiEventData;
6760
6761 /*-------------------------------------------------------------------------
6762 Sanity Check
6763 ------------------------------------------------------------------------*/
6764 if (eWLAN_PAL_FALSE == gWDIInitialized)
6765 {
6766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6767 "WDI API call before module is initialized - Fail request!");
6768
6769 return WDI_STATUS_E_NOT_ALLOWED;
6770 }
6771
6772 /*-------------------------------------------------------------------------
6773 Fill in Event data and post to the Main FSM
6774 ------------------------------------------------------------------------*/
6775 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6776 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6777 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6778 wdiEventData.pCBfnc = NULL;
6779 wdiEventData.pUserData = NULL;
6780
6781 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6782}
6783
6784/**
6785 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6786
6787 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6788
6789 @see
6790
6791 @return Status of the request
6792*/
6793WDI_Status
6794WDI_DelPeriodicTxPtrnInd
6795(
6796 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6797)
6798{
6799 WDI_EventInfoType wdiEventData;
6800
6801 /*-------------------------------------------------------------------------
6802 Sanity Check
6803 ------------------------------------------------------------------------*/
6804 if (eWLAN_PAL_FALSE == gWDIInitialized)
6805 {
6806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6807 "WDI API call before module is initialized - Fail request!");
6808
6809 return WDI_STATUS_E_NOT_ALLOWED;
6810 }
6811
6812 /*-------------------------------------------------------------------------
6813 Fill in Event data and post to the Main FSM
6814 ------------------------------------------------------------------------*/
6815 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6816 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6817 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6818 wdiEventData.pCBfnc = NULL;
6819 wdiEventData.pUserData = NULL;
6820
6821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6822}
6823
6824/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 @brief WDI_HALDumpCmdReq
6826 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006827
6828 @param halDumpCmdReqParams: Hal Dump Command Body
6829 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006830 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006831
Jeff Johnson295189b2012-06-20 16:38:30 -07006832 @see
6833 @return Result of the function call
6834*/
6835WDI_Status WDI_HALDumpCmdReq
6836(
6837 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6838 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6839 void *pUserData
6840)
6841{
6842 WDI_EventInfoType wdiEventData;
6843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6844
6845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 ------------------------------------------------------------------------*/
6848 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6849 {
6850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6851 "WDI API call before module is initialized - Fail request");
6852
Jeff Johnsone7245742012-09-05 17:12:55 -07006853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 }
6855
6856 /*------------------------------------------------------------------------
6857 Fill in Event data and post to the Main FSM
6858 ------------------------------------------------------------------------*/
6859 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6860 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6861 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6862 wdiEventData.pCBfnc = halDumpCmdRspCb;
6863 wdiEventData.pUserData = pUserData;
6864
6865 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6866}
6867
Jeff Johnsone7245742012-09-05 17:12:55 -07006868/*============================================================================
6869
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006871
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 ============================================================================*/
6873
6874/**
6875 @brief Main FSM Start function for all states except BUSY
6876
Jeff Johnsone7245742012-09-05 17:12:55 -07006877
6878 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 wdiEV: event posted to the main DAL FSM
6880 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006881 structure
6882
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 @see
6884 @return Result of the function call
6885*/
6886WDI_Status
6887WDI_PostMainEvent
6888(
Jeff Johnsone7245742012-09-05 17:12:55 -07006889 WDI_ControlBlockType* pWDICtx,
6890 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006892)
6893{
Jeff Johnsone7245742012-09-05 17:12:55 -07006894 WDI_Status wdiStatus;
6895 WDI_MainFuncType pfnWDIMainEvHdlr;
6896 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05306897 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6899
6900 /*-------------------------------------------------------------------------
6901 Sanity check
6902 -------------------------------------------------------------------------*/
6903 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6904 ( wdiEV >= WDI_MAX_EVENT ))
6905 {
6906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6907 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6908 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006910 }
6911
6912 /*Access to the global state must be locked */
6913 wpalMutexAcquire(&pWDICtx->wptMutex);
6914
6915 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006916 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006917
6918 wdiOldState = pWDICtx->uGlobalState;
6919
6920 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006921 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6922 response comes from CCPU for the request sent by host:
6923 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 -07006924 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 -07006925 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006926 CCPU:
6927 don't change the state */
6928 if ( WDI_RESPONSE_EVENT != wdiEV)
6929 {
6930 /*Transition to BUSY State - the request is now being processed by the FSM,
6931 if the request fails we shall transition back to the old state, if not
6932 the request will manage its own state transition*/
6933 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6934 }
6935 /* If the state function associated with the EV is NULL it means that this
6936 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006937 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006938 {
6939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006940 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006941 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006942 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 }
6944 else
6945 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05306946 if (!(failCnt & 0xF))
6947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006949 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05306950 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07006951 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006952 }
6953
6954 /* If a request handles itself well it will end up in a success or in a
6955 pending
6956 Success - means that the request was processed and the proper state
6957 transition already occurred or will occur when the resp is received
6958 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006959
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 Pending - means the request could not be processed at this moment in time
6961 because the FSM was already busy so no state transition or dequeueing
6962 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006963
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 Success for synchronous case means that the transition may occur and
6965 processing of pending requests may continue - so it should go through
6966 and restores the state and continue processing queued requests*/
6967 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6968 ( WDI_STATUS_PENDING != wdiStatus ))
6969 {
6970 if ( WDI_RESPONSE_EVENT != wdiEV)
6971 {
6972 /*The request has failed or could not be processed - transition back to
6973 the old state - check to see if anything was queued and try to execute
6974 The dequeue logic should post a message to a thread and return - no
6975 actual processing can occur */
6976 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6977 }
6978 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006979
Jeff Johnson295189b2012-06-20 16:38:30 -07006980 }
6981
6982 /* we have completed processing the event */
6983 wpalMutexRelease(&pWDICtx->wptMutex);
6984
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006986
6987}/*WDI_PostMainEvent*/
6988
6989
6990/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006991 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006992--------------------------------------------------------------------------*/
6993/**
6994 @brief Main FSM Start function for all states except BUSY
6995
Jeff Johnsone7245742012-09-05 17:12:55 -07006996
6997 @param pWDICtx: pointer to the WLAN DAL context
6998 pEventData: pointer to the event information structure
6999
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 @see
7001 @return Result of the function call
7002*/
7003WDI_Status
7004WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007005(
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 WDI_ControlBlockType* pWDICtx,
7007 WDI_EventInfoType* pEventData
7008)
7009{
7010
7011 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007012 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007013 ----------------------------------------------------------------------*/
7014 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7015 {
7016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007017 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 pWDICtx, pEventData);
7019 return WDI_STATUS_E_FAILURE;
7020 }
7021
7022 wpalMutexAcquire(&pWDICtx->wptMutex);
7023
7024 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007025 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007026 ----------------------------------------------------------------------*/
7027 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7028 {
7029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7030 "Control Transport not yet Open - queueing the request");
7031
7032 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007034
7035 wpalMutexRelease(&pWDICtx->wptMutex);
7036 return WDI_STATUS_PENDING;
7037 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007038
Jeff Johnson295189b2012-06-20 16:38:30 -07007039 wpalMutexRelease(&pWDICtx->wptMutex);
7040
7041 /*Return Success*/
7042 return WDI_ProcessRequest( pWDICtx, pEventData );
7043
7044}/*WDI_MainStart*/
7045
7046/**
7047 @brief Main FSM Response function for state INIT
7048
Jeff Johnsone7245742012-09-05 17:12:55 -07007049
7050 @param pWDICtx: pointer to the WLAN DAL context
7051 pEventData: pointer to the event information structure
7052
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 @see
7054 @return Result of the function call
7055*/
7056WDI_Status
7057WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007058(
Jeff Johnson295189b2012-06-20 16:38:30 -07007059 WDI_ControlBlockType* pWDICtx,
7060 WDI_EventInfoType* pEventData
7061)
7062{
7063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007066 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007067
7068 /*Return Success*/
7069 return WDI_STATUS_E_NOT_ALLOWED;
7070}/* WDI_MainRspInit */
7071
7072/**
7073 @brief Main FSM Close function for all states except BUSY
7074
Jeff Johnsone7245742012-09-05 17:12:55 -07007075
7076 @param pWDICtx: pointer to the WLAN DAL context
7077 pEventData: pointer to the event information structure
7078
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 @see
7080 @return Result of the function call
7081*/
7082WDI_Status
7083WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007084(
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 WDI_ControlBlockType* pWDICtx,
7086 WDI_EventInfoType* pEventData
7087)
7088{
7089
7090 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 ----------------------------------------------------------------------*/
7093 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7094 {
7095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007096 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 pWDICtx, pEventData);
7098 return WDI_STATUS_E_FAILURE;
7099 }
7100
7101 /*Return Success*/
7102 return WDI_ProcessRequest( pWDICtx, pEventData );
7103
7104}/*WDI_MainClose*/
7105/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007106 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007107--------------------------------------------------------------------------*/
7108/**
7109 @brief Main FSM Start function for state STARTED
7110
Jeff Johnsone7245742012-09-05 17:12:55 -07007111
7112 @param pWDICtx: pointer to the WLAN DAL context
7113 pEventData: pointer to the event information structure
7114
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 @see
7116 @return Result of the function call
7117*/
7118WDI_Status
7119WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007120(
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 WDI_ControlBlockType* pWDICtx,
7122 WDI_EventInfoType* pEventData
7123)
7124{
7125 WDI_StartRspCb wdiStartRspCb = NULL;
7126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7127
7128 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 ----------------------------------------------------------------------*/
7131 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7132 {
7133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007134 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007135 pWDICtx, pEventData);
7136 return WDI_STATUS_E_FAILURE;
7137 }
7138
7139 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007140 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007141 ----------------------------------------------------------------------*/
7142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007143 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007144
7145 wpalMutexAcquire(&pWDICtx->wptMutex);
7146
7147 /*Transition back to started because the post function transitioned us to
7148 busy*/
7149 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7150
7151 /*Check to see if any request is pending*/
7152 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007153
Jeff Johnson295189b2012-06-20 16:38:30 -07007154 wpalMutexRelease(&pWDICtx->wptMutex);
7155
7156 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7158
Jeff Johnson295189b2012-06-20 16:38:30 -07007159 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307160 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007161
7162 /*Return Success*/
7163 return WDI_STATUS_SUCCESS;
7164
7165}/*WDI_MainStartStarted*/
7166
7167/**
7168 @brief Main FSM Stop function for state STARTED
7169
Jeff Johnsone7245742012-09-05 17:12:55 -07007170
7171 @param pWDICtx: pointer to the WLAN DAL context
7172 pEventData: pointer to the event information structure
7173
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 @see
7175 @return Result of the function call
7176*/
7177WDI_Status
7178WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007179(
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 WDI_ControlBlockType* pWDICtx,
7181 WDI_EventInfoType* pEventData
7182)
7183{
7184 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007186 ----------------------------------------------------------------------*/
7187 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7188 {
7189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007190 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 pWDICtx, pEventData);
7192 return WDI_STATUS_E_FAILURE;
7193 }
7194
7195 /*State at this point is BUSY - because we enter this state before posting
7196 an event to the FSM in order to prevent potential race conditions*/
7197
7198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7199 "Processing stop request in FSM");
7200
7201 /*Return Success*/
7202 return WDI_ProcessRequest( pWDICtx, pEventData );
7203
7204}/*WDI_MainStopStarted*/
7205/**
7206 @brief Main FSM Request function for state started
7207
Jeff Johnsone7245742012-09-05 17:12:55 -07007208
7209 @param pWDICtx: pointer to the WLAN DAL context
7210 pEventData: pointer to the event information structure
7211
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 @see
7213 @return Result of the function call
7214*/
7215WDI_Status
7216WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007217(
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 WDI_ControlBlockType* pWDICtx,
7219 WDI_EventInfoType* pEventData
7220)
7221{
7222
7223 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 ----------------------------------------------------------------------*/
7226 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7227 {
7228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007229 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007230 pWDICtx, pEventData);
7231 return WDI_STATUS_E_FAILURE;
7232 }
7233
7234 /*State at this point is BUSY - because we enter this state before posting
7235 an event to the FSM in order to prevent potential race conditions*/
7236
7237 /*Return Success*/
7238 return WDI_ProcessRequest( pWDICtx, pEventData );
7239
7240}/*WDI_MainReqStarted*/
7241
7242/**
7243 @brief Main FSM Response function for all states except INIT
7244
Jeff Johnsone7245742012-09-05 17:12:55 -07007245
7246 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007248
Jeff Johnson295189b2012-06-20 16:38:30 -07007249 @see
7250 @return Result of the function call
7251*/
7252WDI_Status
7253WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007254(
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 WDI_ControlBlockType* pWDICtx,
7256 WDI_EventInfoType* pEventData
7257)
7258{
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 wpt_boolean expectedResponse;
7261
7262 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007263 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 ----------------------------------------------------------------------*/
7265 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7266 {
7267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007268 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 pWDICtx, pEventData);
7270 return WDI_STATUS_E_FAILURE;
7271 }
7272
7273 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7274 {
7275 /* we received an expected response */
7276 expectedResponse = eWLAN_PAL_TRUE;
7277
7278 /*We expect that we will transition to started after this processing*/
7279 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7280
7281 /* we are no longer expecting a response */
7282 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7283 }
7284 else
7285 {
7286 /* we received an indication or unexpected response */
7287 expectedResponse = eWLAN_PAL_FALSE;
7288 /* for indications no need to update state from what it is right
7289 now, unless it explicitly does it in the indication handler (say
7290 for device failure ind) */
7291 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7292 }
7293
7294 /*Process the response and indication */
7295 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7296
7297 /*Lock the CB as we are about to do a state transition*/
7298 wpalMutexAcquire(&pWDICtx->wptMutex);
7299
7300 /*Transition to the expected state after the response processing
7301 - this should always be started state with the following exceptions:
7302 1. processing of a failed start response
7303 2. device failure detected while processing response
7304 3. stop response received*/
7305 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007306
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 /*Dequeue request that may have been queued while we were waiting for the
7308 response */
7309 if ( expectedResponse )
7310 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 }
7313
7314 wpalMutexRelease(&pWDICtx->wptMutex);
7315
7316 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007318
7319}/*WDI_MainRsp*/
7320
7321/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007323--------------------------------------------------------------------------*/
7324/**
7325 @brief Main FSM Stop function for state STOPPED
7326
Jeff Johnsone7245742012-09-05 17:12:55 -07007327
7328 @param pWDICtx: pointer to the WLAN DAL context
7329 pEventData: pointer to the event information structure
7330
Jeff Johnson295189b2012-06-20 16:38:30 -07007331 @see
7332 @return Result of the function call
7333*/
7334WDI_Status
7335WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007336(
Jeff Johnson295189b2012-06-20 16:38:30 -07007337 WDI_ControlBlockType* pWDICtx,
7338 WDI_EventInfoType* pEventData
7339)
7340{
7341 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007342 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 ----------------------------------------------------------------------*/
7344 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7345 {
7346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007347 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 pWDICtx, pEventData);
7349 return WDI_STATUS_E_FAILURE;
7350 }
7351
7352 /*We should normally not get a STOP request if we are already stopped
7353 since we should normally be stopped by the UMAC. However in some
7354 error situations we put ourselves in the stopped state without the
7355 UMAC knowing, so when we get a STOP request in this state we still
7356 process it since we need to clean up the underlying state */
7357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7358 "Processing stop request while stopped in FSM");
7359
7360 /*Return Success*/
7361 return WDI_ProcessRequest( pWDICtx, pEventData );
7362
7363}/*WDI_MainStopStopped*/
7364
7365/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007367--------------------------------------------------------------------------*/
7368/**
7369 @brief Main FSM Start function for state BUSY
7370
Jeff Johnsone7245742012-09-05 17:12:55 -07007371
7372 @param pWDICtx: pointer to the WLAN DAL context
7373 pEventData: pointer to the event information structure
7374
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 @see
7376 @return Result of the function call
7377*/
7378WDI_Status
7379WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007380(
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 WDI_ControlBlockType* pWDICtx,
7382 WDI_EventInfoType* pEventData
7383)
7384{
7385 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 ----------------------------------------------------------------------*/
7388 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7389 {
7390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007391 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007392 pWDICtx, pEventData);
7393 return WDI_STATUS_E_FAILURE;
7394 }
7395
7396 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 ----------------------------------------------------------------------*/
7399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7400 "WDI Busy state - queue start request");
7401
7402 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007404
7405 /*Return Success*/
7406 return WDI_STATUS_PENDING;
7407}/*WDI_MainStartBusy*/
7408
7409/**
7410 @brief Main FSM Stop function for state BUSY
7411
Jeff Johnsone7245742012-09-05 17:12:55 -07007412
7413 @param pWDICtx: pointer to the WLAN DAL context
7414 pEventData: pointer to the event information structure
7415
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 @see
7417 @return Result of the function call
7418*/
7419WDI_Status
7420WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007421(
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 WDI_ControlBlockType* pWDICtx,
7423 WDI_EventInfoType* pEventData
7424)
7425{
7426 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 ----------------------------------------------------------------------*/
7429 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7430 {
7431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007432 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 pWDICtx, pEventData);
7434 return WDI_STATUS_E_FAILURE;
7435 }
7436
7437 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 ----------------------------------------------------------------------*/
7440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7441 "WDI Busy state - queue stop request");
7442
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007445
Jeff Johnson295189b2012-06-20 16:38:30 -07007446}/*WDI_MainStopBusy*/
7447
7448/**
7449 @brief Main FSM Request function for state BUSY
7450
Jeff Johnsone7245742012-09-05 17:12:55 -07007451
7452 @param pWDICtx: pointer to the WLAN DAL context
7453 pEventData: pointer to the event information structure
7454
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 @see
7456 @return Result of the function call
7457*/
7458WDI_Status
7459WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007460(
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 WDI_ControlBlockType* pWDICtx,
7462 WDI_EventInfoType* pEventData
7463)
7464{
7465 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007466 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 ----------------------------------------------------------------------*/
7468 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7469 {
7470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007471 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 pWDICtx, pEventData);
7473 return WDI_STATUS_E_FAILURE;
7474 }
7475
7476 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 ----------------------------------------------------------------------*/
7479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7480 "WDI Busy state - queue request %d because waiting for response %d",
7481 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7482
Jeff Johnsone7245742012-09-05 17:12:55 -07007483 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007485
Jeff Johnson295189b2012-06-20 16:38:30 -07007486}/*WDI_MainReqBusy*/
7487/**
7488 @brief Main FSM Close function for state BUSY
7489
Jeff Johnsone7245742012-09-05 17:12:55 -07007490
7491 @param pWDICtx: pointer to the WLAN DAL context
7492 pEventData: pointer to the event information structure
7493
Jeff Johnson295189b2012-06-20 16:38:30 -07007494 @see
7495 @return Result of the function call
7496*/
7497WDI_Status
7498WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007499(
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 WDI_ControlBlockType* pWDICtx,
7501 WDI_EventInfoType* pEventData
7502)
7503{
7504 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 ----------------------------------------------------------------------*/
7507 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7508 {
7509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007510 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 pWDICtx, pEventData);
7512 return WDI_STATUS_E_FAILURE;
7513 }
7514
7515 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007516 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 ----------------------------------------------------------------------*/
7518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7519 "WDI Busy state - queue close request");
7520
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007523
Jeff Johnson295189b2012-06-20 16:38:30 -07007524}/*WDI_MainCloseBusy*/
7525
7526/**
7527 @brief Main FSM Shutdown function for INIT & STARTED states
7528
7529
7530 @param pWDICtx: pointer to the WLAN DAL context
7531 pEventData: pointer to the event information structure
7532
7533 @see
7534 @return Result of the function call
7535*/
7536WDI_Status
7537WDI_MainShutdown
7538(
7539 WDI_ControlBlockType* pWDICtx,
7540 WDI_EventInfoType* pEventData
7541)
7542{
7543 /*--------------------------------------------------------------------
7544 Sanity Check
7545 ----------------------------------------------------------------------*/
7546 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7547 {
7548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007549 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 pWDICtx, pEventData);
7551 return WDI_STATUS_E_FAILURE;
7552 }
7553
7554 /*State at this point is BUSY - because we enter this state before posting
7555 an event to the FSM in order to prevent potential race conditions*/
7556
7557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7558 "Processing shutdown request in FSM");
7559
7560 /*Return Success*/
7561 return WDI_ProcessRequest( pWDICtx, pEventData );
7562
7563}/*WDI_MainShutdown*/
7564
7565/**
7566 @brief Main FSM Shutdown function for BUSY state
7567
7568
7569 @param pWDICtx: pointer to the WLAN DAL context
7570 pEventData: pointer to the event information structure
7571
7572 @see
7573 @return Result of the function call
7574*/
7575WDI_Status
7576WDI_MainShutdownBusy
7577(
7578 WDI_ControlBlockType* pWDICtx,
7579 WDI_EventInfoType* pEventData
7580)
7581{
7582 /*--------------------------------------------------------------------
7583 Sanity Check
7584 ----------------------------------------------------------------------*/
7585 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7586 {
7587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007588 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 pWDICtx, pEventData);
7590 return WDI_STATUS_E_FAILURE;
7591 }
7592
7593 /* If you are waiting for a HAL response at this stage, you are not
7594 * going to get it. Riva is already shutdown/crashed.
7595 */
7596 wpalTimerStop(&gWDICb.wptResponseTimer);
7597
7598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7599 "Processing shutdown request in FSM: Busy state ");
7600
7601 return WDI_ProcessRequest( pWDICtx, pEventData );
7602
7603}/*WDI_MainShutdownBusy*/
7604
7605
Jeff Johnsone7245742012-09-05 17:12:55 -07007606/*=======================================================================
7607
Jeff Johnson295189b2012-06-20 16:38:30 -07007608 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007609
Jeff Johnson295189b2012-06-20 16:38:30 -07007610*=======================================================================*/
7611
7612/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007614========================================================================*/
7615/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007618
7619 @param pWDICtx: pointer to the WLAN DAL context
7620 pEventData: pointer to the event information structure
7621
Jeff Johnson295189b2012-06-20 16:38:30 -07007622 @see
7623 @return Result of the function call
7624*/
7625WDI_Status
7626WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007627(
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 WDI_ControlBlockType* pWDICtx,
7629 WDI_EventInfoType* pEventData
7630)
7631{
7632 WDI_StartReqParamsType* pwdiStartParams = NULL;
7633 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007634 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 wpt_uint16 usDataOffset = 0;
7636 wpt_uint16 usSendSize = 0;
7637
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 tHalMacStartReqMsg halStartReq;
7639 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7641
7642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 -------------------------------------------------------------------------*/
7645 if (( NULL == pEventData ) ||
7646 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7647 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7648 {
7649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 }
7654
7655 /*-----------------------------------------------------------------------
7656 Get message buffer
7657 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007658 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007659 pwdiStartParams->usConfigBufferLen;
7660
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 usLen,
7663 &pSendBuffer, &usDataOffset, &usSendSize))||
7664 ( usSendSize < (usDataOffset + usLen )))
7665 {
7666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007667 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 pEventData, pwdiStartParams, wdiStartRspCb);
7669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 }
7672
7673 /*-----------------------------------------------------------------------
7674 Fill in the message
7675 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007676 halStartReq.startReqParams.driverType =
7677 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007678
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 halStartReq.startReqParams.uConfigBufferLen =
7680 pwdiStartParams->usConfigBufferLen;
7681 wpalMemoryCopy( pSendBuffer+usDataOffset,
7682 &halStartReq.startReqParams,
7683 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007684
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 usDataOffset += sizeof(halStartReq.startReqParams);
7686 wpalMemoryCopy( pSendBuffer+usDataOffset,
7687 pwdiStartParams->pConfigBuffer,
7688 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007689
7690 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007692
7693 /*Save Low Level Ind CB and associated user data - it will be used further
7694 on when an indication is coming from the lower MAC*/
7695 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007697
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007703 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7704
Jeff Johnsone7245742012-09-05 17:12:55 -07007705
Jeff Johnson295189b2012-06-20 16:38:30 -07007706}/*WDI_ProcessStartReq*/
7707
7708/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007709 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007710 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007711
7712 @param pWDICtx: pointer to the WLAN DAL context
7713 pEventData: pointer to the event information structure
7714
Jeff Johnson295189b2012-06-20 16:38:30 -07007715 @see
7716 @return Result of the function call
7717*/
7718WDI_Status
7719WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007720(
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 WDI_ControlBlockType* pWDICtx,
7722 WDI_EventInfoType* pEventData
7723)
7724{
7725 WDI_StopReqParamsType* pwdiStopParams = NULL;
7726 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007727 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 wpt_uint16 usDataOffset = 0;
7729 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007730 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7733
7734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 -------------------------------------------------------------------------*/
7737 if (( NULL == pEventData ) ||
7738 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7739 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7740 {
7741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007744 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 }
7746
7747 /*-----------------------------------------------------------------------
7748 Get message buffer
7749 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 sizeof(halStopReq.stopReqParams),
7752 &pSendBuffer, &usDataOffset, &usSendSize))||
7753 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7754 {
7755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007756 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 pEventData, pwdiStopParams, wdiStopRspCb);
7758 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007759 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007760 }
7761
7762 /*-----------------------------------------------------------------------
7763 Fill in the message
7764 -----------------------------------------------------------------------*/
7765 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7766 pwdiStopParams->wdiStopReason);
7767
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 wpalMemoryCopy( pSendBuffer+usDataOffset,
7769 &halStopReq.stopReqParams,
7770 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007771
7772 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007774
7775 /*! TO DO: stop the data services */
7776 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7777 {
7778 /*Stop the STA Table !UT- check this logic again
7779 It is safer to do it here than on the response - because a stop is imminent*/
7780 WDI_STATableStop(pWDICtx);
7781
7782 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007783 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7784 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 {
7786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7787 "WDI Init failed to reset power state event");
7788
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007790 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 }
7792 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007793 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7794 if( eWLAN_PAL_STATUS_SUCCESS != status )
7795 {
7796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007797 "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 -08007798 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007799 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007800 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007804 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7805 WDI_SET_POWER_STATE_TIMEOUT);
7806 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 {
7808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7809 "WDI Init failed to wait on an event");
7810
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007812 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 }
7814 }
7815
7816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7821
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007822fail:
7823 // Release the message buffer so we don't leak
7824 wpalMemoryFree(pSendBuffer);
7825
7826failRequest:
7827 //WDA should have failure check to avoid the memory leak
7828 return WDI_STATUS_E_FAILURE;
7829
Jeff Johnson295189b2012-06-20 16:38:30 -07007830}/*WDI_ProcessStopReq*/
7831
7832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007835
7836 @param pWDICtx: pointer to the WLAN DAL context
7837 pEventData: pointer to the event information structure
7838
Jeff Johnson295189b2012-06-20 16:38:30 -07007839 @see
7840 @return Result of the function call
7841*/
7842WDI_Status
7843WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007844(
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 WDI_ControlBlockType* pWDICtx,
7846 WDI_EventInfoType* pEventData
7847)
7848{
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7851
7852 /*Lock control block for cleanup*/
7853 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007854
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 /*Clear all pending request*/
7856 WDI_ClearPendingRequests(pWDICtx);
7857
7858 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007859 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007860
7861 /* Close Data transport*/
7862 /* FTM mode does not open Data Path */
7863 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7864 {
7865 WDTS_Close(pWDICtx);
7866 }
7867
7868 /*Close the STA Table !UT- check this logic again*/
7869 WDI_STATableClose(pWDICtx);
7870
7871 /*close the PAL */
7872 wptStatus = wpalClose(pWDICtx->pPALContext);
7873 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7874 {
7875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7876 "Failed to wpal Close %d", wptStatus);
7877 WDI_ASSERT(0);
7878 }
7879
7880 /*Transition back to init state*/
7881 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7882
7883 wpalMutexRelease(&pWDICtx->wptMutex);
7884
7885 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007887
Jeff Johnsone7245742012-09-05 17:12:55 -07007888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007889}/*WDI_ProcessCloseReq*/
7890
7891
7892/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007894===========================================================================*/
7895
7896/**
7897 @brief Process Init Scan Request function (called when Main FSM
7898 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_ProcessInitScanReq
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{
7913 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7914 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 wpt_uint16 usDataOffset = 0;
7917 wpt_uint16 usSendSize = 0;
7918 wpt_uint8 i = 0;
7919
7920 tHalInitScanReqMsg halInitScanReqMsg;
7921
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 * It shold be removed once host and riva changes are in sync*/
7924 tHalInitScanConReqMsg halInitScanConReqMsg;
7925
7926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7927
7928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 -------------------------------------------------------------------------*/
7931 if (( NULL == pEventData ) ||
7932 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7933 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7934 {
7935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 }
7940
7941#if 0
7942 wpalMutexAcquire(&pWDICtx->wptMutex);
7943 /*-----------------------------------------------------------------------
7944 Check to see if SCAN is already in progress - if so reject the req
7945 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007946 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 -----------------------------------------------------------------------*/
7948 if ( pWDICtx->bScanInProgress )
7949 {
7950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7951 "Scan is already in progress - subsequent scan is not allowed"
7952 " until the first scan completes");
7953
7954 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007956 }
7957
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7959 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007960
7961 wpalMutexRelease(&pWDICtx->wptMutex);
7962#endif
Viral Modid86bde22012-12-10 13:09:21 -08007963 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 * It shold be removed once host and riva changes are in sync*/
7967 /*-----------------------------------------------------------------------
7968 Get message buffer
7969 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 sizeof(halInitScanConReqMsg.initScanParams),
7972 &pSendBuffer, &usDataOffset, &usSendSize))||
7973 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7974 {
7975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007976 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 }
7981
7982
7983 /*-----------------------------------------------------------------------
7984 Fill in the message
7985 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007986 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7988
7989 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7990 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7991
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7998
7999 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8000 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8001
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8003 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8007
8008 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8009 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8012 }
8013
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 wpalMemoryCopy( pSendBuffer+usDataOffset,
8015 &halInitScanConReqMsg.initScanParams,
8016 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 }
8018 else
8019 {
8020 /*-----------------------------------------------------------------------
8021 Get message buffer
8022 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 sizeof(halInitScanReqMsg.initScanParams),
8025 &pSendBuffer, &usDataOffset, &usSendSize))||
8026 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8027 {
8028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008029 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 }
8034
8035
8036 /*-----------------------------------------------------------------------
8037 Fill in the message
8038 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8041
8042 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8043 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8044
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8051
8052 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8053 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8054
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008056 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8057
8058 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8059 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8062 }
8063
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 wpalMemoryCopy( pSendBuffer+usDataOffset,
8065 &halInitScanReqMsg.initScanParams,
8066 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 }
8068
8069 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008071
8072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8077
8078}/*WDI_ProcessInitScanReq*/
8079
8080/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008083
8084 @param pWDICtx: pointer to the WLAN DAL context
8085 pEventData: pointer to the event information structure
8086
Jeff Johnson295189b2012-06-20 16:38:30 -07008087 @see
8088 @return Result of the function call
8089*/
8090WDI_Status
8091WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008092(
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 WDI_ControlBlockType* pWDICtx,
8094 WDI_EventInfoType* pEventData
8095)
8096{
8097 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8098 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 wpt_uint16 usDataOffset = 0;
8101 wpt_uint16 usSendSize = 0;
8102
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8105
8106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 -------------------------------------------------------------------------*/
8109 if (( NULL == pEventData ) ||
8110 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8111 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8112 {
8113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 }
8118
8119#if 0
8120 wpalMutexAcquire(&pWDICtx->wptMutex);
8121 /*-----------------------------------------------------------------------
8122 Check to see if SCAN is already in progress - start scan is only
8123 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8128 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8129 {
8130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8131 "Scan start not allowed in this state %d %d",
8132 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008133
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 }
8137
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008139
8140 wpalMutexRelease(&pWDICtx->wptMutex);
8141#endif
8142
8143 /*-----------------------------------------------------------------------
8144 Get message buffer
8145 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 sizeof(halStartScanReqMsg.startScanParams),
8148 &pSendBuffer, &usDataOffset, &usSendSize))||
8149 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8150 {
8151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008152 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 }
8157
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 wpalMemoryCopy( pSendBuffer+usDataOffset,
8161 &halStartScanReqMsg.startScanParams,
8162 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008163
8164 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008166
8167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8172}/*WDI_ProcessStartScanReq*/
8173
8174
8175/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008176 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008177 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008178
8179 @param pWDICtx: pointer to the WLAN DAL context
8180 pEventData: pointer to the event information structure
8181
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 @see
8183 @return Result of the function call
8184*/
8185WDI_Status
8186WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008187(
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 WDI_ControlBlockType* pWDICtx,
8189 WDI_EventInfoType* pEventData
8190)
8191{
8192 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8193 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 wpt_uint16 usDataOffset = 0;
8196 wpt_uint16 usSendSize = 0;
8197
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8200
8201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 -------------------------------------------------------------------------*/
8204 if (( NULL == pEventData ) ||
8205 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8206 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8207 {
8208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008212 }
8213
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8215 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 * forwarded to HAL and result in hang*/
8217#if 0
8218 wpalMutexAcquire(&pWDICtx->wptMutex);
8219 /*-----------------------------------------------------------------------
8220 Check to see if SCAN is already in progress - end scan is only
8221 allowed when a scan is ongoing and the state of the scan procedure
8222 is started
8223 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8226 {
8227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8228 "End start not allowed in this state %d %d",
8229 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008230
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 }
8234
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008236
8237 wpalMutexRelease(&pWDICtx->wptMutex);
8238#endif
8239
8240 /*-----------------------------------------------------------------------
8241 Get message buffer
8242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 sizeof(halEndScanReqMsg.endScanParams),
8245 &pSendBuffer, &usDataOffset, &usSendSize))||
8246 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8247 {
8248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008249 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 }
8254
8255 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8256
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 wpalMemoryCopy( pSendBuffer+usDataOffset,
8258 &halEndScanReqMsg.endScanParams,
8259 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008260
8261 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008263
8264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8269}/*WDI_ProcessEndScanReq*/
8270
8271
8272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008275
8276 @param pWDICtx: pointer to the WLAN DAL context
8277 pEventData: pointer to the event information structure
8278
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 @see
8280 @return Result of the function call
8281*/
8282WDI_Status
8283WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008284(
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 WDI_ControlBlockType* pWDICtx,
8286 WDI_EventInfoType* pEventData
8287)
8288{
8289 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8290 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 wpt_uint16 usDataOffset = 0;
8293 wpt_uint16 usSendSize = 0;
8294 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008295 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8298
8299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 -------------------------------------------------------------------------*/
8302 if (( NULL == pEventData ) ||
8303 ( NULL == pEventData->pEventData) ||
8304 ( NULL == pEventData->pCBfnc))
8305 {
8306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 }
8311
8312 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8313 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8315 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 * forwarded to HAL and result in hang*/
8317#if 0
8318 wpalMutexAcquire(&pWDICtx->wptMutex);
8319 /*-----------------------------------------------------------------------
8320 Check to see if SCAN is already in progress
8321 Finish scan gets invoked any scan states. ie. abort scan
8322 It should be allowed in any states.
8323 -----------------------------------------------------------------------*/
8324 if ( !pWDICtx->bScanInProgress )
8325 {
8326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8327 "Finish start not allowed in this state %d",
8328 pWDICtx->bScanInProgress );
8329
8330 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 }
8333
8334 /*-----------------------------------------------------------------------
8335 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008337 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8339 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 wpalMutexRelease(&pWDICtx->wptMutex);
8341#endif
8342
8343 if ( pWDICtx->bInBmps )
8344 {
8345 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008346 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8347 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8348 {
8349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008350 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008351 WDI_ASSERT(0);
8352 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 }
8354
8355 /*-----------------------------------------------------------------------
8356 Get message buffer
8357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 sizeof(halFinishScanReqMsg.finishScanParams),
8360 &pSendBuffer, &usDataOffset, &usSendSize))||
8361 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8362 {
8363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008364 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 }
8369
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8372
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8375
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8378
8379 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8380 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8381
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8388
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8391
8392 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8393 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8396 }
8397
8398 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8399 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8400
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 wpalMemoryCopy( pSendBuffer+usDataOffset,
8402 &halFinishScanReqMsg.finishScanParams,
8403 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008404
8405 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008407
8408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8413}/*WDI_ProcessFinishScanReq*/
8414
8415
8416/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008418==========================================================================*/
8419/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 @brief Process BSS Join for a given Session
8421
8422 @param pWDICtx: pointer to the WLAN DAL context
8423 pEventData: pointer to the event information structure
8424
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 @see
8426 @return Result of the function call
8427*/
8428WDI_Status
8429WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008430(
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 WDI_ControlBlockType* pWDICtx,
8432 WDI_JoinReqParamsType* pwdiJoinParams,
8433 WDI_JoinRspCb wdiJoinRspCb,
8434 void* pUserData
8435)
8436{
8437 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008438 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 wpt_uint16 usDataOffset = 0;
8440 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008442
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8445
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008446 wpalMutexAcquire(&pWDICtx->wptMutex);
8447
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 /*------------------------------------------------------------------------
8449 Check to see if we have any session with this BSSID already stored, we
8450 should not
8451 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8453 pwdiJoinParams->wdiReqInfo.macBSSID,
8454 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008455
8456 if ( NULL != pBSSSes )
8457 {
8458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008459 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8460 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008461
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008462 /*reset the bAssociationInProgress otherwise the next
8463 *join request will be queued*/
8464 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8465 wpalMutexRelease(&pWDICtx->wptMutex);
8466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 }
8468
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 if ( NULL == pBSSSes )
8474 {
8475
8476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8477 "DAL has no free sessions - cannot run another join");
8478
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008479 /*reset the bAssociationInProgress otherwise the next
8480 *join request will be queued*/
8481 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 }
8485
8486 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8488 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 WDI_MAC_ADDR_LEN);
8490
8491 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008494
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 wpalMutexRelease(&pWDICtx->wptMutex);
8496
8497 /*-----------------------------------------------------------------------
8498 Get message buffer
8499 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 sizeof(halJoinReqMsg.joinReqParams),
8502 &pSendBuffer, &usDataOffset, &usSendSize))||
8503 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8504 {
8505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008506 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 pUserData, pwdiJoinParams, wdiJoinRspCb);
8508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 }
8511
8512 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008514
8515 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 pwdiJoinParams->wdiReqInfo.macSTASelf,
8517 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008518
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8521
8522 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8523
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008524#ifdef WLAN_FEATURE_VOWIFI
8525 halJoinReqMsg.joinReqParams.maxTxPower =
8526 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8527#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008529 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8530#endif
8531
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8534 wdiSecondaryChannelOffset);
8535
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 wpalMemoryCopy( pSendBuffer+usDataOffset,
8537 &halJoinReqMsg.joinReqParams,
8538 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008539
8540 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008542
8543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8547 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008548
8549}/*WDI_ProcessBSSSessionJoinReq*/
8550
8551/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008552 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008554
8555 @param pWDICtx: pointer to the WLAN DAL context
8556 pEventData: pointer to the event information structure
8557
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 @see
8559 @return Result of the function call
8560*/
8561WDI_Status
8562WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008563(
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 WDI_ControlBlockType* pWDICtx,
8565 WDI_EventInfoType* pEventData
8566)
8567{
8568 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8569 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8570 WDI_JoinRspCb wdiJoinRspCb = NULL;
8571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8572
8573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 -------------------------------------------------------------------------*/
8576 if (( NULL == pEventData ) ||
8577 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8578 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8579 {
8580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008581 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008585
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 /*-------------------------------------------------------------------------
8587 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 -------------------------------------------------------------------------*/
8590 wpalMutexAcquire(&pWDICtx->wptMutex);
8591
8592 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8593 {
8594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8595 "Association is currently in progress, queueing new join req");
8596
8597 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 pwdiJoinParams->wdiReqInfo.macBSSID);
8600
8601 wpalMutexRelease(&pWDICtx->wptMutex);
8602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 }
8605
8606 /*Starting a new association */
8607 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8608 wpalMutexRelease(&pWDICtx->wptMutex);
8609
8610 /*Process the Join Request*/
8611 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8612 wdiJoinRspCb,pEventData->pUserData);
8613
8614}/*WDI_ProcessJoinReq*/
8615
8616
8617/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008620
8621 @param pWDICtx: pointer to the WLAN DAL context
8622 pEventData: pointer to the event information structure
8623
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 @see
8625 @return Result of the function call
8626*/
8627WDI_Status
8628WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008629(
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 WDI_ControlBlockType* pWDICtx,
8631 WDI_EventInfoType* pEventData
8632)
8633{
8634 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8635 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 wpt_uint16 uMsgSize = 0;
8639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 wpt_uint16 usDataOffset = 0;
8641 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8646
8647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 -------------------------------------------------------------------------*/
8650 if (( NULL == pEventData ) ||
8651 ( NULL == pEventData->pEventData ) ||
8652 ( NULL == pEventData->pCBfnc ))
8653 {
8654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008658 }
8659
Abhishek Singh6927fa02014-06-27 17:19:55 +05308660 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8662 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8663 /*-------------------------------------------------------------------------
8664 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 -------------------------------------------------------------------------*/
8667 wpalMutexAcquire(&pWDICtx->wptMutex);
8668
8669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8673 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8674 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008675
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 {
8678#ifdef WLAN_FEATURE_VOWIFI_11R
8679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 if ( NULL == pBSSSes )
8684 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008685
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8687 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008688
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008692
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008694 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8695 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008697
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008699 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008700 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8701#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 * Request in case of IBSS*/
8704 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8705 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8706 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8707 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8708 {
8709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 if ( NULL == pBSSSes )
8714 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008715
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8717 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008718
Jeff Johnson295189b2012-06-20 16:38:30 -07008719 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008720 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008721 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008722
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8725 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008727
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8731 }
8732 else
8733 {
8734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8736 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8737 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8738
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 /* for IBSS testing */
8740 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 }
8743#endif
8744 }
8745
8746 /*------------------------------------------------------------------------
8747 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 ------------------------------------------------------------------------*/
8750 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8751 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8753 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8754 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8755 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008756
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008758
8759 wpalMutexRelease(&pWDICtx->wptMutex);
8760
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 }
8763
8764 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008765 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8766 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 sizeof(pWDICtx->wdiCachedConfigBssReq));
8768
8769 wpalMutexRelease(&pWDICtx->wptMutex);
8770
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8772#ifdef WLAN_FEATURE_11AC
8773 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008774 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 else
8776#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008777 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008778
8779 /*-----------------------------------------------------------------------
8780 Get message buffer
8781 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8784 ( usSendSize < (usDataOffset + uMsgSize )))
8785 {
8786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008787 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 }
8792
8793 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008794#ifdef WLAN_FEATURE_11AC
8795 if (WDI_getFwWlanFeatCaps(DOT11AC))
8796 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8797 &pwdiConfigBSSParams->wdiReqInfo);
8798 else
8799#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 &pwdiConfigBSSParams->wdiReqInfo);
8802
8803 /* Need to fill in the STA Index to invalid, since at this point we have not
8804 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008806
8807 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8809
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008810#ifdef WLAN_FEATURE_11AC
8811 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8812 wpalMemoryCopy( pSendBuffer+usDataOffset,
8813 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8814 uMsgSize);
8815 }else
8816#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008817 {
8818 if ( uMsgSize <= sizeof(tConfigBssParams) )
8819 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008820 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008821 &halConfigBssReqMsg.uBssParams.configBssParams,
8822 uMsgSize);
8823 }
8824 else
8825 {
8826 return WDI_STATUS_E_FAILURE;
8827 }
8828 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008829
8830 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308832 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8837 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 WDI_CONFIG_BSS_RESP);
8839
8840}/*WDI_ProcessConfigBSSReq*/
8841
8842
8843/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008845 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008846
8847 @param pWDICtx: pointer to the WLAN DAL context
8848 pEventData: pointer to the event information structure
8849
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 @see
8851 @return Result of the function call
8852*/
8853WDI_Status
8854WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008855(
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 WDI_ControlBlockType* pWDICtx,
8857 WDI_EventInfoType* pEventData
8858)
8859{
8860 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8861 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 wpt_uint16 usDataOffset = 0;
8866 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008868
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8871
8872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 -------------------------------------------------------------------------*/
8875 if (( NULL == pEventData ) ||
8876 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8877 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8878 {
8879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 }
8884
8885 /*-------------------------------------------------------------------------
8886 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 -------------------------------------------------------------------------*/
8889 wpalMutexAcquire(&pWDICtx->wptMutex);
8890
8891 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8895 pwdiDelBSSParams->ucBssIdx,
8896 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008897
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 {
8900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 "%s: BSS does not yet exist. ucBssIdx %d",
8902 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008903
8904 wpalMutexRelease(&pWDICtx->wptMutex);
8905
8906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008908
8909 /*------------------------------------------------------------------------
8910 Check if this BSS is being currently processed or queued,
8911 if queued - queue the new request as well
8912 ------------------------------------------------------------------------*/
8913 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8916 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8917 __func__, pwdiDelBSSParams->ucBssIdx);
8918
8919 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8920
8921 wpalMutexRelease(&pWDICtx->wptMutex);
8922
8923 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008925
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 /*-----------------------------------------------------------------------
8927 If we receive a Del BSS request for an association that is already in
8928 progress, it indicates that the assoc has failed => we no longer have
8929 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008930 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 -----------------------------------------------------------------------*/
8932 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8933 {
8934 /*We can switch to false here because even if a subsequent Join comes in
8935 it will only be processed when DAL transitions out of BUSY state which
8936 happens when the Del BSS request comes */
8937 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8938
8939 /*Former association is complete - prepare next pending assoc for
8940 processing */
8941 WDI_DequeueAssocRequest(pWDICtx);
8942 }
8943
8944 wpalMutexRelease(&pWDICtx->wptMutex);
8945 /*-----------------------------------------------------------------------
8946 Get message buffer
8947 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 sizeof(halBssReqMsg.deleteBssParams),
8950 &pSendBuffer, &usDataOffset, &usSendSize))||
8951 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8952 {
8953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008954 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 }
8959
8960 /*Fill in the message request structure*/
8961
8962 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008963 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008964
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 wpalMemoryCopy( pSendBuffer+usDataOffset,
8966 &halBssReqMsg.deleteBssParams,
8967 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008968
8969 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008971
Jeff Johnsone7245742012-09-05 17:12:55 -07008972
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008974 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008975 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8978
Jeff Johnsone7245742012-09-05 17:12:55 -07008979
Jeff Johnson295189b2012-06-20 16:38:30 -07008980}/*WDI_ProcessDelBSSReq*/
8981
8982/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008983 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008985
8986 @param pWDICtx: pointer to the WLAN DAL context
8987 pEventData: pointer to the event information structure
8988
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 @see
8990 @return Result of the function call
8991*/
8992WDI_Status
8993WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008994(
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 WDI_ControlBlockType* pWDICtx,
8996 WDI_EventInfoType* pEventData
8997)
8998{
8999 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9000 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 wpt_uint16 usDataOffset = 0;
9005 wpt_uint16 usSendSize = 0;
9006 wpt_uint16 uMsgSize = 0;
9007 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009009
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9012
9013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 -------------------------------------------------------------------------*/
9016 if (( NULL == pEventData ) ||
9017 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9018 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9019 {
9020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 }
9025
9026 /*-------------------------------------------------------------------------
9027 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 -------------------------------------------------------------------------*/
9030 wpalMutexAcquire(&pWDICtx->wptMutex);
9031
9032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9036 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9037 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009038
9039 if ( NULL == pBSSSes )
9040 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9042 "%s: Association sequence for this BSS does not yet exist - "
9043 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9044 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009045
9046 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 }
9049
9050 /*------------------------------------------------------------------------
9051 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 ------------------------------------------------------------------------*/
9054 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9055 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9057 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9058 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009059
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009061
9062 wpalMutexRelease(&pWDICtx->wptMutex);
9063
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 }
9066
9067 /*-----------------------------------------------------------------------
9068 If Post Assoc was not yet received - the current association must
9069 be in progress
9070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9073 {
9074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9075 "Association sequence for this BSS association no longer in "
9076 "progress - not allowed");
9077
9078 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 }
9081
9082 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 -----------------------------------------------------------------------*/
9085 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9086 {
9087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9088 "Post Assoc not allowed before JOIN - failing request");
9089
9090 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 }
9093
9094 wpalMutexRelease(&pWDICtx->wptMutex);
9095
9096 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9097 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9098 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009102 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9103 ( usSendSize < (usDataOffset + uMsgSize )))
9104 {
9105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009106 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 }
9111
9112 /*Copy the STA parameters */
9113 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9114 &pwdiPostAssocParams->wdiSTAParams );
9115
9116 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 WDI_STATableFindStaidByAddr(pWDICtx,
9119 pwdiPostAssocParams->wdiSTAParams.macSTA,
9120 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9121 {
9122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009123 MAC_ADDRESS_STR
9124 ": This station does not exist in the WDI Station Table",
9125 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009127 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 }
9130
9131 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 pBSSSes->ucBSSIdx;
9134
9135 /*Copy the BSS parameters */
9136 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9137 &pwdiPostAssocParams->wdiBSSParams);
9138
9139 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 WDI_STATableFindStaidByAddr(pWDICtx,
9142 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 {
9145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009146 MAC_ADDRESS_STR
9147 ": This station does not exist in the WDI Station Table",
9148 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009150 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 }
9153
9154 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 pBSSSes->ucBSSIdx;
9157
Jeff Johnsone7245742012-09-05 17:12:55 -07009158
9159 wpalMemoryCopy( pSendBuffer+usDataOffset,
9160 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9161 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009162
9163 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9164
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9166 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9167 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009168
Jeff Johnsone7245742012-09-05 17:12:55 -07009169
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009172
Jeff Johnsone7245742012-09-05 17:12:55 -07009173
9174 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009177
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309178 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9184
Jeff Johnsone7245742012-09-05 17:12:55 -07009185
Jeff Johnson295189b2012-06-20 16:38:30 -07009186}/*WDI_ProcessPostAssocReq*/
9187
9188/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009191
9192 @param pWDICtx: pointer to the WLAN DAL context
9193 pEventData: pointer to the event information structure
9194
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 @see
9196 @return Result of the function call
9197*/
9198WDI_Status
9199WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009200(
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 WDI_ControlBlockType* pWDICtx,
9202 WDI_EventInfoType* pEventData
9203)
9204{
9205 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9206 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 wpt_uint16 usDataOffset = 0;
9211 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9214
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9217
9218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 -------------------------------------------------------------------------*/
9221 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9222 ( NULL == pEventData->pCBfnc ))
9223 {
9224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009228 }
9229
9230 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9231 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9232 /*-------------------------------------------------------------------------
9233 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 -------------------------------------------------------------------------*/
9236 wpalMutexAcquire(&pWDICtx->wptMutex);
9237
9238 /*------------------------------------------------------------------------
9239 Find the BSS for which the request is made and identify WDI session
9240 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9242 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 &macBSSID))
9244 {
9245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009246 "This station does not exist in the WDI Station Table %d",
9247 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 }
9251
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9253 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9256 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9257 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009258
9259 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 }
9262
9263 /*------------------------------------------------------------------------
9264 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 ------------------------------------------------------------------------*/
9267 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9268 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9270 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9271 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009272
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009275 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 }
9277
9278 wpalMutexRelease(&pWDICtx->wptMutex);
9279 /*-----------------------------------------------------------------------
9280 Get message buffer
9281 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 sizeof(halDelStaReqMsg.delStaParams),
9284 &pSendBuffer, &usDataOffset, &usSendSize))||
9285 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9286 {
9287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009288 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9290 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
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9295 wpalMemoryCopy( pSendBuffer+usDataOffset,
9296 &halDelStaReqMsg.delStaParams,
9297 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009298
9299 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009301
9302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9307
9308}/*WDI_ProcessDelSTAReq*/
9309
9310
9311/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009313==========================================================================*/
9314/**
9315 @brief Process Set BSS Key Request function (called when Main FSM
9316 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009317
9318 @param pWDICtx: pointer to the WLAN DAL context
9319 pEventData: pointer to the event information structure
9320
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 @see
9322 @return Result of the function call
9323*/
9324WDI_Status
9325WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009326(
Jeff Johnson295189b2012-06-20 16:38:30 -07009327 WDI_ControlBlockType* pWDICtx,
9328 WDI_EventInfoType* pEventData
9329)
9330{
9331 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9332 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 wpt_uint16 usDataOffset = 0;
9337 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9340 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309341 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009342
9343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9344
9345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 -------------------------------------------------------------------------*/
9348 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9349 ( NULL == pEventData->pCBfnc ))
9350 {
9351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 }
9356
9357 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9358 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9359 /*-------------------------------------------------------------------------
9360 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 -------------------------------------------------------------------------*/
9363 wpalMutexAcquire(&pWDICtx->wptMutex);
9364
9365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9369 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9370 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009371
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 {
9374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9376 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009377
9378 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 }
9381
9382 /*------------------------------------------------------------------------
9383 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 ------------------------------------------------------------------------*/
9386 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9387 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9389 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9390 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009391
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 }
9396
9397
9398 wpalMutexRelease(&pWDICtx->wptMutex);
9399 /*-----------------------------------------------------------------------
9400 Get message buffer
9401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9404 &pSendBuffer, &usDataOffset, &usSendSize))||
9405 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9406 {
9407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009408 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 }
9413
9414 /*-----------------------------------------------------------------------
9415 Copy the Key parameters into the HAL message
9416 -----------------------------------------------------------------------*/
9417
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9422
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9425
9426 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9427 keyIndex++)
9428 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9431 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9432 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9433 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9434 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309435
9436 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9437 {
9438 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9439 {
9440 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9441 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9442 }
9443
9444 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9445 {
9446 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9447 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9448 }
9449
9450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9451 "%s: Negated Keys", __func__);
9452 }
9453 else
9454 {
9455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9456 "%s: No change in Keys", __func__);
9457 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309460 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9461 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9462 WDI_MAX_KEY_LENGTH);
9463 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309468 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009469
9470 wpalMemoryCopy( pSendBuffer+usDataOffset,
9471 &halSetBssKeyReqMsg.setBssKeyParams,
9472 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009473
9474 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476
9477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9481 wdiSetBSSKeyRspCb, pEventData->pUserData,
9482 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
9484}/*WDI_ProcessSetBssKeyReq*/
9485
9486/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009489
9490 @param pWDICtx: pointer to the WLAN DAL context
9491 pEventData: pointer to the event information structure
9492
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 @see
9494 @return Result of the function call
9495*/
9496WDI_Status
9497WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009498(
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 WDI_ControlBlockType* pWDICtx,
9500 WDI_EventInfoType* pEventData
9501)
9502{
9503 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9504 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 wpt_uint16 usDataOffset = 0;
9509 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9513
9514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 -------------------------------------------------------------------------*/
9517 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9518 ( NULL == pEventData->pCBfnc ))
9519 {
9520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 }
9525
9526 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9527 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9528 /*-------------------------------------------------------------------------
9529 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 -------------------------------------------------------------------------*/
9532 wpalMutexAcquire(&pWDICtx->wptMutex);
9533
9534 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9538 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9539 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009540
Jeff Johnsone7245742012-09-05 17:12:55 -07009541 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009542 {
9543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9545 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009546
9547 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 }
9550
9551 /*------------------------------------------------------------------------
9552 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 ------------------------------------------------------------------------*/
9555 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9556 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9558 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9559 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009560
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 }
9565
9566
9567 wpalMutexRelease(&pWDICtx->wptMutex);
9568
9569 /*-----------------------------------------------------------------------
9570 Get message buffer
9571 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9574 &pSendBuffer, &usDataOffset, &usSendSize))||
9575 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9576 {
9577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009578 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 }
9583 /*-----------------------------------------------------------------------
9584 Copy the Key parameters into the HAL message
9585 -----------------------------------------------------------------------*/
9586 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9587
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9590
9591 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9592
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9595
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 wpalMemoryCopy( pSendBuffer+usDataOffset,
9597 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9598 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009599
9600 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009602
9603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009609}/*WDI_ProcessRemoveBssKeyReq*/
9610
9611/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009614
9615 @param pWDICtx: pointer to the WLAN DAL context
9616 pEventData: pointer to the event information structure
9617
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 @see
9619 @return Result of the function call
9620*/
9621WDI_Status
9622WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009623(
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 WDI_ControlBlockType* pWDICtx,
9625 WDI_EventInfoType* pEventData
9626)
9627{
9628 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9629 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9630 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 wpt_uint16 usDataOffset = 0;
9633 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9638 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309639 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009640
9641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9642
9643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009645 -------------------------------------------------------------------------*/
9646 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9647 ( NULL == pEventData->pCBfnc ))
9648 {
9649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 }
9654
9655 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9656 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9657 /*-------------------------------------------------------------------------
9658 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 -------------------------------------------------------------------------*/
9661 wpalMutexAcquire(&pWDICtx->wptMutex);
9662
9663 /*------------------------------------------------------------------------
9664 Find the BSS for which the request is made and identify WDI session
9665 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9667 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009668 &macBSSID))
9669 {
9670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009671 "This station does not exist in the WDI Station Table %d",
9672 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 }
9676
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9678 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9681 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9682 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009683
9684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009687
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 /*------------------------------------------------------------------------
9689 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 ------------------------------------------------------------------------*/
9692 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9693 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9695 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9696 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009697
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 }
9702
9703
9704 wpalMutexRelease(&pWDICtx->wptMutex);
9705 /*-----------------------------------------------------------------------
9706 Get message buffer
9707 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9710 &pSendBuffer, &usDataOffset, &usSendSize))||
9711 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9712 {
9713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009714 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 }
9719 /*-----------------------------------------------------------------------
9720 Copy the STA Key parameters into the HAL message
9721 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009723 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9724
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9727
9728 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9729
9730 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9731
9732 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9733
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9735 keyIndex++)
9736 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009737 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9739 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9740 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9741 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9742 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309743
9744 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9745 {
9746 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9747 {
9748 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9749 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9750 }
9751
9752 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9753 {
9754 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9755 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9756 }
9757
9758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9759 "%s: Negated Keys", __func__);
9760 }
9761 else
9762 {
9763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9764 "%s: No change in Keys", __func__);
9765 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009766 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009767 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309768 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9769 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9770 WDI_MAX_KEY_LENGTH);
9771 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309776 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009777
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 wpalMemoryCopy( pSendBuffer+usDataOffset,
9779 &halSetStaKeyReqMsg.setStaKeyParams,
9780 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009781
9782 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309784 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9789 wdiSetSTAKeyRspCb, pEventData->pUserData,
9790 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009791
9792}/*WDI_ProcessSetSTAKeyReq*/
9793
9794/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009797
9798 @param pWDICtx: pointer to the WLAN DAL context
9799 pEventData: pointer to the event information structure
9800
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 @see
9802 @return Result of the function call
9803*/
9804WDI_Status
9805WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009806(
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 WDI_ControlBlockType* pWDICtx,
9808 WDI_EventInfoType* pEventData
9809)
9810{
9811 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9812 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9813 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 wpt_uint16 usDataOffset = 0;
9816 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 wpt_macAddr macBSSID;
9819 wpt_uint8 ucCurrentBSSSesIdx;
9820 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9822
9823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 -------------------------------------------------------------------------*/
9826 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9827 ( NULL == pEventData->pCBfnc ))
9828 {
9829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 }
9834
9835 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9836 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9837 /*-------------------------------------------------------------------------
9838 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 -------------------------------------------------------------------------*/
9841 wpalMutexAcquire(&pWDICtx->wptMutex);
9842
9843 /*------------------------------------------------------------------------
9844 Find the BSS for which the request is made and identify WDI session
9845 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9847 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 &macBSSID))
9849 {
9850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009851 "This station does not exist in the WDI Station Table %d",
9852 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 }
9856
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9858 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9861 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9862 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009863
9864 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009867
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 /*------------------------------------------------------------------------
9869 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 ------------------------------------------------------------------------*/
9872 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9873 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9875 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9876 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009877
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 }
9882
9883
9884
9885 wpalMutexRelease(&pWDICtx->wptMutex);
9886 /*-----------------------------------------------------------------------
9887 Get message buffer
9888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9891 &pSendBuffer, &usDataOffset, &usSendSize))||
9892 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9893 {
9894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009895 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 }
9900
9901 /*-----------------------------------------------------------------------
9902 Copy the Key parameters into the HAL message
9903 -----------------------------------------------------------------------*/
9904
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9907
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9910
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9913
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9916
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 wpalMemoryCopy( pSendBuffer+usDataOffset,
9918 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9919 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009920
9921 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009923
9924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009930
9931}/*WDI_ProcessRemoveSTAKeyReq*/
9932
9933/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009936
9937 @param pWDICtx: pointer to the WLAN DAL context
9938 pEventData: pointer to the event information structure
9939
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 @see
9941 @return Result of the function call
9942*/
9943WDI_Status
9944WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009945(
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 WDI_ControlBlockType* pWDICtx,
9947 WDI_EventInfoType* pEventData
9948)
9949{
9950 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9951 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9952 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 wpt_uint16 usDataOffset = 0;
9955 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9960 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309961 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009962
9963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9964
9965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009966 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009967 -------------------------------------------------------------------------*/
9968 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9969 ( NULL == pEventData->pCBfnc ))
9970 {
9971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 }
9976
9977 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9978 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9979 /*-------------------------------------------------------------------------
9980 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 -------------------------------------------------------------------------*/
9983 wpalMutexAcquire(&pWDICtx->wptMutex);
9984
9985 /*------------------------------------------------------------------------
9986 Find the BSS for which the request is made and identify WDI session
9987 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9989 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 &macBSSID))
9991 {
9992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009993 "This station does not exist in the WDI Station Table %d",
9994 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 }
9998
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10000 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 {
10002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010003 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010004 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010005
10006 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010009
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 /*------------------------------------------------------------------------
10011 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 ------------------------------------------------------------------------*/
10014 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10015 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10017 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10018 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010019
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 }
10024
10025
10026 wpalMutexRelease(&pWDICtx->wptMutex);
10027 /*-----------------------------------------------------------------------
10028 Get message buffer
10029 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010031 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10032 &pSendBuffer, &usDataOffset, &usSendSize))||
10033 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10034 {
10035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010036 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 }
10041 /*-----------------------------------------------------------------------
10042 Copy the STA Key parameters into the HAL message
10043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10046
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10049
10050 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10051
10052 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10053
10054 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10055
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10057 keyIndex++)
10058 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10061 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10062 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10063 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10064 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010065
10066 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10067 {
10068 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10069 {
10070 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10071 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10072 }
10073
10074 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10075 {
10076 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10077 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10078 }
10079
10080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10081 "%s: Negated Keys", __func__);
10082 }
10083 else
10084 {
10085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10086 "%s: No change in Keys", __func__);
10087 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010090 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10091 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10092 WDI_MAX_KEY_LENGTH);
10093 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010098 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 wpalMemoryCopy( pSendBuffer+usDataOffset,
10100 &halSetStaKeyReqMsg.setStaKeyParams,
10101 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010102
10103 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010105
10106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010108 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10110 wdiSetSTAKeyRspCb, pEventData->pUserData,
10111 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010112
10113}/*WDI_ProcessSetSTABcastKeyReq*/
10114
10115/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010118
10119 @param pWDICtx: pointer to the WLAN DAL context
10120 pEventData: pointer to the event information structure
10121
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 @see
10123 @return Result of the function call
10124*/
10125WDI_Status
10126WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010127(
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 WDI_ControlBlockType* pWDICtx,
10129 WDI_EventInfoType* pEventData
10130)
10131{
10132 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10133 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10134 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010135 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 wpt_uint16 usDataOffset = 0;
10137 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010138 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010139 wpt_macAddr macBSSID;
10140 wpt_uint8 ucCurrentBSSSesIdx;
10141 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10143
10144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 -------------------------------------------------------------------------*/
10147 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10148 ( NULL == pEventData->pCBfnc ))
10149 {
10150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 }
10155
10156 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10157 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10158 /*-------------------------------------------------------------------------
10159 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 -------------------------------------------------------------------------*/
10162 wpalMutexAcquire(&pWDICtx->wptMutex);
10163
10164 /*------------------------------------------------------------------------
10165 Find the BSS for which the request is made and identify WDI session
10166 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10168 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 &macBSSID))
10170 {
10171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010172 "This station does not exist in the WDI Station Table %d",
10173 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 }
10177
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10179 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10182 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10183 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010184
10185 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010188
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 /*------------------------------------------------------------------------
10190 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 ------------------------------------------------------------------------*/
10193 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10194 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10196 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10197 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010198
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010201 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010202 }
10203
10204
10205
10206 wpalMutexRelease(&pWDICtx->wptMutex);
10207 /*-----------------------------------------------------------------------
10208 Get message buffer
10209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10212 &pSendBuffer, &usDataOffset, &usSendSize))||
10213 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10214 {
10215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010216 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010220 }
10221
10222 /*-----------------------------------------------------------------------
10223 Copy the Key parameters into the HAL message
10224 -----------------------------------------------------------------------*/
10225
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10228
Jeff Johnsone7245742012-09-05 17:12:55 -070010229 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10231
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10234
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10237
Jeff Johnsone7245742012-09-05 17:12:55 -070010238 wpalMemoryCopy( pSendBuffer+usDataOffset,
10239 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10240 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010241
10242 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010243 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010244
10245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010251
10252}/*WDI_ProcessRemoveSTABcastKeyReq*/
10253
10254/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010256==========================================================================*/
10257/**
10258 @brief Process Add TSpec Request function (called when Main FSM
10259 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010260
10261 @param pWDICtx: pointer to the WLAN DAL context
10262 pEventData: pointer to the event information structure
10263
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 @see
10265 @return Result of the function call
10266*/
10267WDI_Status
10268WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010269(
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 WDI_ControlBlockType* pWDICtx,
10271 WDI_EventInfoType* pEventData
10272)
10273{
10274 WDI_AddTSReqParamsType* pwdiAddTSParams;
10275 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010279 wpt_uint16 usDataOffset = 0;
10280 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010281 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010282 wpt_macAddr macBSSID;
10283 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010284
Jeff Johnson295189b2012-06-20 16:38:30 -070010285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10286
10287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010289 -------------------------------------------------------------------------*/
10290 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10291 ( NULL == pEventData->pCBfnc ))
10292 {
10293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 }
10298
10299 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10300 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10301 /*-------------------------------------------------------------------------
10302 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 -------------------------------------------------------------------------*/
10305 wpalMutexAcquire(&pWDICtx->wptMutex);
10306
10307 /*------------------------------------------------------------------------
10308 Find the BSS for which the request is made and identify WDI session
10309 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10311 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 &macBSSID))
10313 {
10314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010315 "This station does not exist in the WDI Station Table %d",
10316 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10322 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10325 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10326 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010327
10328 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010331
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 /*------------------------------------------------------------------------
10333 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 ------------------------------------------------------------------------*/
10336 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10337 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10339 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10340 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010341
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 }
10346
10347 wpalMutexRelease(&pWDICtx->wptMutex);
10348 /*-----------------------------------------------------------------------
10349 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10353 sizeof(halAddTsParams),
10354 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 &usSendSize))||
10356 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10357 {
10358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010359 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 }
10364
10365 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10366 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10367
10368 //TSPEC IE
10369 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10370 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010371 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010383 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010399 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10401
10402 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010404 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010413 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010415 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010416 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10417
10418 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10423
Jeff Johnsone7245742012-09-05 17:12:55 -070010424 wpalMemoryCopy( pSendBuffer+usDataOffset,
10425 &halAddTsParams,
10426 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010427
10428 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430
10431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010437}/*WDI_ProcessAddTSpecReq*/
10438
10439
10440/**
10441 @brief Process Del TSpec Request function (called when Main FSM
10442 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010443
10444 @param pWDICtx: pointer to the WLAN DAL context
10445 pEventData: pointer to the event information structure
10446
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 @see
10448 @return Result of the function call
10449*/
10450WDI_Status
10451WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010452(
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 WDI_ControlBlockType* pWDICtx,
10454 WDI_EventInfoType* pEventData
10455)
10456{
10457 WDI_DelTSReqParamsType* pwdiDelTSParams;
10458 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 wpt_uint16 usDataOffset = 0;
10463 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10466
10467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 -------------------------------------------------------------------------*/
10470 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10471 ( NULL == pEventData->pCBfnc ))
10472 {
10473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 }
10478
10479 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10480 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10481
10482 /*-------------------------------------------------------------------------
10483 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 -------------------------------------------------------------------------*/
10486 wpalMutexAcquire(&pWDICtx->wptMutex);
10487
10488 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10492 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10493 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010494
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10498 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10499 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10500
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 }
10504
10505 /*------------------------------------------------------------------------
10506 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010507 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 ------------------------------------------------------------------------*/
10509 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10510 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10512 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10513 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010514
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 }
10519
10520
10521 wpalMutexRelease(&pWDICtx->wptMutex);
10522 /*-----------------------------------------------------------------------
10523 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10528 &pSendBuffer, &usDataOffset, &usSendSize))||
10529 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10530 {
10531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010532 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 }
10537
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 wpalMemoryCopy( pSendBuffer+usDataOffset,
10539 &pwdiDelTSParams->wdiDelTSInfo,
10540 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010541
10542 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010544
10545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010547 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10549 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010550}/*WDI_ProcessDelTSpecReq*/
10551
10552/**
10553 @brief Process Update EDCA Params Request function (called when
10554 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010555
10556 @param pWDICtx: pointer to the WLAN DAL context
10557 pEventData: pointer to the event information structure
10558
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 @see
10560 @return Result of the function call
10561*/
10562WDI_Status
10563WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010564(
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 WDI_ControlBlockType* pWDICtx,
10566 WDI_EventInfoType* pEventData
10567)
10568{
10569 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10570 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010571 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010572 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010574 wpt_uint16 usDataOffset = 0;
10575 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10578
10579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 -------------------------------------------------------------------------*/
10582 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10583 ( NULL == pEventData->pCBfnc ))
10584 {
10585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010589 }
10590
10591 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10592 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10593 /*-------------------------------------------------------------------------
10594 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010595 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 -------------------------------------------------------------------------*/
10597 wpalMutexAcquire(&pWDICtx->wptMutex);
10598
10599 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10603 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10604 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010605
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 {
10608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010609 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10610 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010611
10612 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 }
10615
10616 /*------------------------------------------------------------------------
10617 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 ------------------------------------------------------------------------*/
10620 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10621 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10623 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10624 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010625
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010628 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 }
10630
10631
10632 wpalMutexRelease(&pWDICtx->wptMutex);
10633 /*-----------------------------------------------------------------------
10634 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10639 &pSendBuffer, &usDataOffset, &usSendSize))||
10640 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10641 {
10642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010643 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 }
10648
Jeff Johnsone7245742012-09-05 17:12:55 -070010649 wpalMemoryCopy( pSendBuffer+usDataOffset,
10650 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10651 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010652
10653 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010654 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010655
10656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010657 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10660 wdiUpdateEDCARspCb, pEventData->pUserData,
10661 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010662}/*WDI_ProcessUpdateEDCAParamsReq*/
10663
10664/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010665 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010667
10668 @param pWDICtx: pointer to the WLAN DAL context
10669 pEventData: pointer to the event information structure
10670
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 @see
10672 @return Result of the function call
10673*/
10674WDI_Status
10675WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010676(
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 WDI_ControlBlockType* pWDICtx,
10678 WDI_EventInfoType* pEventData
10679)
10680{
10681 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10682 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 wpt_uint16 usDataOffset = 0;
10687 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 wpt_macAddr macBSSID;
10690
10691 tAddBASessionReqMsg halAddBASessionReq;
10692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10693
10694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 -------------------------------------------------------------------------*/
10697 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10698 ( NULL == pEventData->pCBfnc ))
10699 {
10700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010704 }
10705
Jeff Johnsone7245742012-09-05 17:12:55 -070010706 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010707 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10710 /*-------------------------------------------------------------------------
10711 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 -------------------------------------------------------------------------*/
10714 wpalMutexAcquire(&pWDICtx->wptMutex);
10715
10716 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10720 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 &macBSSID))
10722 {
10723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010724 "This station does not exist in the WDI Station Table %d",
10725 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 }
10729
10730
Jeff Johnsone7245742012-09-05 17:12:55 -070010731 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010732
Jeff Johnsone7245742012-09-05 17:12:55 -070010733 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010734 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10736 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10737 __func__, MAC_ADDR_ARRAY(macBSSID));
10738
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 }
10742
10743 /*------------------------------------------------------------------------
10744 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 ------------------------------------------------------------------------*/
10747 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10748 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10750 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10751 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010752
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 }
10757
10758
10759 wpalMutexRelease(&pWDICtx->wptMutex);
10760 /*-----------------------------------------------------------------------
10761 Get message buffer
10762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10764 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 sizeof(halAddBASessionReq.addBASessionParams),
10766 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10769 {
10770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010771 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010775 }
10776
10777 halAddBASessionReq.addBASessionParams.staIdx =
10778 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10779 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10780 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10781 WDI_MAC_ADDR_LEN);
10782 halAddBASessionReq.addBASessionParams.baTID =
10783 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10784 halAddBASessionReq.addBASessionParams.baPolicy =
10785 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10786 halAddBASessionReq.addBASessionParams.baBufferSize =
10787 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10788 halAddBASessionReq.addBASessionParams.baTimeout =
10789 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10790 halAddBASessionReq.addBASessionParams.baSSN =
10791 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10792 halAddBASessionReq.addBASessionParams.baDirection =
10793 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10794
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 wpalMemoryCopy( pSendBuffer+usDataOffset,
10796 &halAddBASessionReq.addBASessionParams,
10797 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010798
10799 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010801
10802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10806 wdiAddBASessionRspCb, pEventData->pUserData,
10807 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010808}/*WDI_ProcessAddBASessionReq*/
10809
10810/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010813
10814 @param pWDICtx: pointer to the WLAN DAL context
10815 pEventData: pointer to the event information structure
10816
Jeff Johnson295189b2012-06-20 16:38:30 -070010817 @see
10818 @return Result of the function call
10819*/
10820WDI_Status
10821WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010822(
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 WDI_ControlBlockType* pWDICtx,
10824 WDI_EventInfoType* pEventData
10825)
10826{
10827 WDI_DelBAReqParamsType* pwdiDelBAParams;
10828 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 wpt_uint16 usDataOffset = 0;
10833 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 wpt_macAddr macBSSID;
10836 tDelBAParams halDelBAparam;
10837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10838
10839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 -------------------------------------------------------------------------*/
10842 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10843 ( NULL == pEventData->pCBfnc ))
10844 {
10845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010849 }
10850
10851 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10852 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10853 /*-------------------------------------------------------------------------
10854 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 -------------------------------------------------------------------------*/
10857 wpalMutexAcquire(&pWDICtx->wptMutex);
10858
10859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10863 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 &macBSSID))
10865 {
10866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010867 "This station does not exist in the WDI Station Table %d",
10868 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 }
10872
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010874
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10878 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10879 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010880
10881 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010882 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010883 }
10884
10885 /*------------------------------------------------------------------------
10886 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010888 ------------------------------------------------------------------------*/
10889 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10890 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10892 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10893 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010894
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 }
10899
10900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 sizeof(halDelBAparam),
10903 &pSendBuffer, &usDataOffset, &usSendSize))||
10904 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10905 {
10906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010907 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 }
10912
10913 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10914 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10915 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10916
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 wpalMemoryCopy( pSendBuffer+usDataOffset,
10918 &halDelBAparam,
10919 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010920
10921 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010923
10924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10928 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010929}/*WDI_ProcessDelBAReq*/
10930
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010931#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010932
10933WDI_Status
10934WDI_ProcessTSMStatsReq
10935(
10936 WDI_ControlBlockType* pWDICtx,
10937 WDI_EventInfoType* pEventData
10938)
10939{
10940 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10941 WDI_TsmRspCb wdiTSMRspCb;
10942 wpt_uint8 ucCurrentBSSSesIdx = 0;
10943 WDI_BSSSessionType* pBSSSes = NULL;
10944 wpt_uint8* pSendBuffer = NULL;
10945 wpt_uint16 usDataOffset = 0;
10946 wpt_uint16 usSendSize = 0;
10947 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10948 tTsmStatsParams halTsmStatsReqParams = {0};
10949
10950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10951
10952 /*-------------------------------------------------------------------------
10953 Sanity check
10954 -------------------------------------------------------------------------*/
10955 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10956 ( NULL == pEventData->pCBfnc ))
10957 {
10958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 WDI_ASSERT(0);
10961 return WDI_STATUS_E_FAILURE;
10962 }
10963
10964 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10965 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10966 /*-------------------------------------------------------------------------
10967 Check to see if we are in the middle of an association, if so queue, if
10968 not it means it is free to process request
10969 -------------------------------------------------------------------------*/
10970 wpalMutexAcquire(&pWDICtx->wptMutex);
10971
10972 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10973 if ( NULL == pBSSSes )
10974 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10976 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10977 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010978
10979 wpalMutexRelease(&pWDICtx->wptMutex);
10980 return WDI_STATUS_E_NOT_ALLOWED;
10981 }
10982
10983 /*------------------------------------------------------------------------
10984 Check if this BSS is being currently processed or queued,
10985 if queued - queue the new request as well
10986 ------------------------------------------------------------------------*/
10987 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10988 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010990 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010992
10993 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10994 wpalMutexRelease(&pWDICtx->wptMutex);
10995 return wdiStatus;
10996 }
10997
10998 wpalMutexRelease(&pWDICtx->wptMutex);
10999 /*-----------------------------------------------------------------------
11000 Get message buffer
11001 ! TO DO : proper conversion into the HAL Message Request Format
11002 -----------------------------------------------------------------------*/
11003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11004 sizeof(halTsmStatsReqParams),
11005 &pSendBuffer, &usDataOffset, &usSendSize))||
11006 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11007 {
11008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011009 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011010 pEventData, pwdiTSMParams, wdiTSMRspCb);
11011 WDI_ASSERT(0);
11012 return WDI_STATUS_E_FAILURE;
11013 }
11014
11015 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11016 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11017 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11018 WDI_MAC_ADDR_LEN);
11019 wpalMemoryCopy( pSendBuffer+usDataOffset,
11020 &halTsmStatsReqParams,
11021 sizeof(halTsmStatsReqParams));
11022
11023 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11024 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11025
11026 /*-------------------------------------------------------------------------
11027 Send TSM Stats Request to HAL
11028 -------------------------------------------------------------------------*/
11029 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11030 wdiTSMRspCb, pEventData->pUserData,
11031 WDI_TSM_STATS_RESP);
11032}/*WDI_ProcessTSMStatsReq*/
11033
11034#endif
11035
11036
11037/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011040
11041 @param pWDICtx: pointer to the WLAN DAL context
11042 pEventData: pointer to the event information structure
11043
Jeff Johnson295189b2012-06-20 16:38:30 -070011044 @see
11045 @return Result of the function call
11046*/
11047WDI_Status
11048WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011049(
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 WDI_ControlBlockType* pWDICtx,
11051 WDI_EventInfoType* pEventData
11052)
11053{
11054 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11055 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011057 wpt_uint16 usDataOffset = 0;
11058 wpt_uint16 usSendSize = 0;
11059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11060
11061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 -------------------------------------------------------------------------*/
11064 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11065 ( NULL == pEventData->pCBfnc ))
11066 {
11067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 }
11072
11073 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11074 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11075 /*-----------------------------------------------------------------------
11076 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011077 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11081 &pSendBuffer, &usDataOffset, &usSendSize))||
11082 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11083 {
11084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011085 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011086 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 }
11090
Jeff Johnsone7245742012-09-05 17:12:55 -070011091 wpalMemoryCopy( pSendBuffer+usDataOffset,
11092 &pwdiFlushAcParams->wdiFlushAcInfo,
11093 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011094
11095 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011097
11098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011101 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11102 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011103}/*WDI_ProcessFlushAcReq*/
11104
11105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011106 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011107 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011108
11109 @param pWDICtx: pointer to the WLAN DAL context
11110 pEventData: pointer to the event information structure
11111
Jeff Johnson295189b2012-06-20 16:38:30 -070011112 @see
11113 @return Result of the function call
11114*/
11115WDI_Status
11116WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011117(
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 WDI_ControlBlockType* pWDICtx,
11119 WDI_EventInfoType* pEventData
11120)
11121{
11122 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11123 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011124 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 wpt_uint16 usDataOffset = 0;
11126 wpt_uint16 usSendSize = 0;
11127
11128 tBtAmpEventMsg haltBtAmpEventMsg;
11129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11130
11131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 -------------------------------------------------------------------------*/
11134 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11135 ( NULL == pEventData->pCBfnc ))
11136 {
11137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 }
11142
11143 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11144 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11145 /*-----------------------------------------------------------------------
11146 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011147 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011148 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011149 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011150 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11151 &pSendBuffer, &usDataOffset, &usSendSize))||
11152 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11153 {
11154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011155 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 }
11160
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 wpalMemoryCopy( pSendBuffer+usDataOffset,
11164 &haltBtAmpEventMsg.btAmpEventParams,
11165 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011166
11167 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169
11170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011173 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11174 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011175}/*WDI_ProcessBtAmpEventReq*/
11176
11177/**
11178 @brief Process Add STA self Request function (called when Main FSM
11179 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011180
11181 @param pWDICtx: pointer to the WLAN DAL context
11182 pEventData: pointer to the event information structure
11183
Jeff Johnson295189b2012-06-20 16:38:30 -070011184 @see
11185 @return Result of the function call
11186*/
11187WDI_Status
11188WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011189(
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 WDI_ControlBlockType* pWDICtx,
11191 WDI_EventInfoType* pEventData
11192)
11193{
11194 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11195 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011197 wpt_uint16 usDataOffset = 0;
11198 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011199 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11201
11202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 -------------------------------------------------------------------------*/
11205 if (( NULL == pEventData ) ||
11206 ( NULL == pEventData->pEventData) ||
11207 ( NULL == pEventData->pCBfnc))
11208 {
11209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 }
11214
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011216 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011217 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11219 /*-----------------------------------------------------------------------
11220 Get message buffer
11221 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11223 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011224 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011225 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011226 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011227 {
11228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011229 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011230 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011233 }
11234
11235 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011237 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11238
Jeff Johnsone7245742012-09-05 17:12:55 -070011239 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011240 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11241 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11242 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11243 {
11244 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11245 }
11246 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11247 VOS_P2P_CLIENT_MODE) ||
11248 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11249 VOS_P2P_DEVICE))
11250 {
11251 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11252 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011253 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011254 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011255
11256 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011258
11259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011262 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11263 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11264 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011265}/*WDI_ProcessAddSTASelfReq*/
11266
11267
11268
11269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011272
11273 @param pWDICtx: pointer to the WLAN DAL context
11274 pEventData: pointer to the event information structure
11275
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 @see
11277 @return Result of the function call
11278*/
11279WDI_Status
11280WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011281(
Jeff Johnson295189b2012-06-20 16:38:30 -070011282 WDI_ControlBlockType* pWDICtx,
11283 WDI_EventInfoType* pEventData
11284)
11285{
11286 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11287 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 wpt_uint16 usDataOffset = 0;
11290 wpt_uint16 usSendSize = 0;
11291 tDelStaSelfParams halSetDelSelfSTAParams;
11292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11293
11294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011296 -------------------------------------------------------------------------*/
11297 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11298 ( NULL == pEventData->pCBfnc ))
11299 {
11300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011304 }
11305
Jeff Johnsone7245742012-09-05 17:12:55 -070011306 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011307 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11308 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11309
11310 /*-----------------------------------------------------------------------
11311 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011312 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11316 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11319 {
11320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011321 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011322 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 }
11326
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011328 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11329
Jeff Johnsone7245742012-09-05 17:12:55 -070011330 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11331 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011332
11333 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011335
11336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11340 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 WDI_DEL_STA_SELF_RESP);
11342
11343}
11344
Jeff Johnsone7245742012-09-05 17:12:55 -070011345#ifdef FEATURE_OEM_DATA_SUPPORT
11346/**
11347 @brief Process Start Oem Data Request function (called when Main
11348 FSM allows it)
11349
11350 @param pWDICtx: pointer to the WLAN DAL context
11351 pEventData: pointer to the event information structure
11352
11353 @see
11354 @return Result of the function call
11355*/
11356WDI_Status
11357WDI_ProcessStartOemDataReq
11358(
11359 WDI_ControlBlockType* pWDICtx,
11360 WDI_EventInfoType* pEventData
11361)
11362{
11363 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11364 WDI_oemDataRspCb wdiOemDataRspCb;
11365 wpt_uint8* pSendBuffer = NULL;
11366 wpt_uint16 usDataOffset = 0;
11367 wpt_uint16 usSendSize = 0;
11368 wpt_uint16 reqLen;
11369 tStartOemDataReqParams* halStartOemDataReqParams;
11370
11371 /*-------------------------------------------------------------------------
11372 Sanity check
11373 -------------------------------------------------------------------------*/
11374 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11375 ( NULL == pEventData->pCBfnc ))
11376 {
11377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011378 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 WDI_ASSERT(0);
11380 return WDI_STATUS_E_FAILURE;
11381 }
11382
11383 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11384 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11385
11386 /*-----------------------------------------------------------------------
11387 Get message buffer
11388 -----------------------------------------------------------------------*/
11389
11390 reqLen = sizeof(tStartOemDataReqParams);
11391
11392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11393 WDI_START_OEM_DATA_REQ, reqLen,
11394 &pSendBuffer, &usDataOffset, &usSendSize))||
11395 (usSendSize < (usDataOffset + reqLen)))
11396 {
11397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011398 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11400 WDI_ASSERT(0);
11401 return WDI_STATUS_E_FAILURE;
11402 }
11403
11404 //copying WDI OEM DATA REQ PARAMS to shared memory
11405 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11406
11407 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11408 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11409
11410 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11411 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11412
11413 /*-------------------------------------------------------------------------
11414 Send Start Request to HAL
11415 -------------------------------------------------------------------------*/
11416 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11417 wdiOemDataRspCb, pEventData->pUserData,
11418 WDI_START_OEM_DATA_RESP);
11419}/*WDI_ProcessStartOemDataReq*/
11420#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011421
11422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011425
11426 @param pWDICtx: pointer to the WLAN DAL context
11427 pEventData: pointer to the event information structure
11428
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 @see
11430 @return Result of the function call
11431*/
11432WDI_Status
11433WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011434(
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 WDI_ControlBlockType* pWDICtx,
11436 WDI_EventInfoType* pEventData
11437)
11438{
11439 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11440 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 wpt_uint16 usDataOffset = 0;
11443 wpt_uint16 usSendSize = 0;
11444 tHalWlanHostResumeReqParam halResumeReqParams;
11445
11446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11447
11448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 -------------------------------------------------------------------------*/
11451 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11452 ( NULL == pEventData->pCBfnc ))
11453 {
11454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011455 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 }
11459
11460 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11461 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11462
11463 /*-----------------------------------------------------------------------
11464 Get message buffer
11465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11468 &pSendBuffer, &usDataOffset, &usSendSize))||
11469 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11470 {
11471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011472 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 }
11477
Jeff Johnsone7245742012-09-05 17:12:55 -070011478 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011480
11481 wpalMemoryCopy( pSendBuffer+usDataOffset,
11482 &halResumeReqParams,
11483 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011484
11485 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011486 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011487
11488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011489 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11492 wdiHostResumeRspCb, pEventData->pUserData,
11493 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011494}/*WDI_ProcessHostResumeReq*/
11495
11496/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011497 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011499
11500 @param pWDICtx: pointer to the WLAN DAL context
11501 pEventData: pointer to the event information structure
11502
Jeff Johnson295189b2012-06-20 16:38:30 -070011503 @see
11504 @return Result of the function call
11505*/
11506WDI_Status
11507WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011508(
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 WDI_ControlBlockType* pWDICtx,
11510 WDI_EventInfoType* pEventData
11511)
11512{
11513 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11514 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 wpt_uint16 usDataOffset = 0;
11517 wpt_uint16 usSendSize = 0;
11518 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11520
11521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011523 -------------------------------------------------------------------------*/
11524 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11525 ( NULL == pEventData->pCBfnc ))
11526 {
11527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011528 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 }
11532
11533 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11534 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011535
Jeff Johnson295189b2012-06-20 16:38:30 -070011536 /*-----------------------------------------------------------------------
11537 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011538 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 sizeof(halTxPerTrackingReqParam),
11542 &pSendBuffer, &usDataOffset, &usSendSize))||
11543 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11544 {
11545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011546 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011551
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11553 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11554 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11555 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011556
11557 wpalMemoryCopy( pSendBuffer+usDataOffset,
11558 &halTxPerTrackingReqParam,
11559 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011560
11561 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011563
11564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11568 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011569}/*WDI_ProcessSetTxPerTrackingReq*/
11570
11571/*=========================================================================
11572 Indications
11573=========================================================================*/
11574
11575/**
11576 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011577
11578 @param pWDICtx: pointer to the WLAN DAL context
11579 pEventData: pointer to the event information structure
11580
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 @see
11582 @return Result of the function call
11583*/
11584WDI_Status
11585WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011586(
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 WDI_ControlBlockType* pWDICtx,
11588 WDI_EventInfoType* pEventData
11589)
11590{
11591 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 wpt_uint16 usDataOffset = 0;
11594 wpt_uint16 usSendSize = 0;
11595 WDI_Status wdiStatus;
11596 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11598
11599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011600 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 -------------------------------------------------------------------------*/
11602 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11603 {
11604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011605 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 }
11609
11610 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11611
11612 /*-----------------------------------------------------------------------
11613 Get message buffer
11614 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11616 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 sizeof(halWlanSuspendIndparams),
11618 &pSendBuffer, &usDataOffset, &usSendSize))||
11619 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11620 {
11621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11622 "Unable to get send buffer in Suspend Ind ");
11623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 }
11626
11627 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11628 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11629
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011631 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011632
Jeff Johnsone7245742012-09-05 17:12:55 -070011633 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11634 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011635
11636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011638 -------------------------------------------------------------------------*/
11639 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011641
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11644}/*WDI_ProcessHostSuspendInd*/
11645
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011646
11647
11648/**
11649 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11650
11651 @param pWDICtx: pointer to the WLAN DAL context
11652 pEventData: pointer to the event information structure
11653
11654 @see
11655 @return Result of the function call
11656*/
11657WDI_Status
11658WDI_ProcessTrafficStatsInd
11659(
11660 WDI_ControlBlockType* pWDICtx,
11661 WDI_EventInfoType* pEventData
11662)
11663{
11664 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11665 wpt_uint8* pSendBuffer = NULL;
11666 wpt_uint16 usDataOffset = 0;
11667 wpt_uint16 usSendSize = 0;
11668 WDI_Status wdiStatus;
11669 tStatsClassBIndParams* pStatsClassBIndParams;
11670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11671
11672 /*-------------------------------------------------------------------------
11673 Sanity check
11674 -------------------------------------------------------------------------*/
11675 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11676 {
11677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11678 "%s: Invalid parameters in Traffic Stats ind",__func__);
11679 WDI_ASSERT(0);
11680 return WDI_STATUS_E_FAILURE;
11681 }
11682
11683 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11684
11685 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11686 {
11687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11688 "%s: Invalid parameters in Traffic Stats ind",__func__);
11689 WDI_ASSERT(0);
11690 return WDI_STATUS_E_FAILURE;
11691 }
11692
11693 /*-----------------------------------------------------------------------
11694 Get message buffer
11695 -----------------------------------------------------------------------*/
11696 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11697 WDI_TRAFFIC_STATS_IND,
11698 sizeof(tStatsClassBIndParams),
11699 &pSendBuffer, &usDataOffset, &usSendSize))||
11700 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11701 {
11702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11703 "Unable to get send buffer in Traffic Stats Ind ");
11704 WDI_ASSERT(0);
11705 return WDI_STATUS_E_FAILURE;
11706 }
11707
11708 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11709
11710 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11711
11712 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11713 pTrafficStatsIndParams->pTrafficStats,
11714 pTrafficStatsIndParams->length);
11715
11716 /*-------------------------------------------------------------------------
11717 Send Suspend Request to HAL
11718 -------------------------------------------------------------------------*/
11719 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11720 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11721
11722 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11723 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11724}/*WDI_ProcessTrafficStatsInd*/
11725
Chet Lanctot186b5732013-03-18 10:26:30 -070011726#ifdef WLAN_FEATURE_11W
11727/**
11728 @brief Process Exclude Unencrypted Indications function (called
11729 when Main FSM allows it)
11730
11731 @param pWDICtx: pointer to the WLAN DAL context
11732 pEventData: pointer to the event information structure
11733
11734 @see
11735 @return Result of the function call
11736*/
11737WDI_Status
11738WDI_ProcessExcludeUnencryptInd
11739(
11740 WDI_ControlBlockType* pWDICtx,
11741 WDI_EventInfoType* pEventData
11742)
11743{
11744 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11745 wpt_uint8* pSendBuffer = NULL;
11746 wpt_uint16 usDataOffset = 0;
11747 wpt_uint16 usSendSize = 0;
11748 WDI_Status wdiStatus;
11749 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11751
11752 /*-------------------------------------------------------------------------
11753 Sanity check
11754 -------------------------------------------------------------------------*/
11755 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11756 {
11757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11758 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11759 WDI_ASSERT(0);
11760 return WDI_STATUS_E_FAILURE;
11761 }
11762
11763 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11764
11765 /*-----------------------------------------------------------------------
11766 Get message buffer
11767 -----------------------------------------------------------------------*/
11768 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11769 WDI_EXCLUDE_UNENCRYPTED_IND,
11770 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11771 &pSendBuffer, &usDataOffset, &usSendSize))||
11772 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11773 {
11774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11775 "Unable to get send buffer in Exclude Unencrypted Ind ");
11776 WDI_ASSERT(0);
11777 return WDI_STATUS_E_FAILURE;
11778 }
11779
11780 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11781
11782 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11783
11784 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11785 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11786
11787 /*-------------------------------------------------------------------------
11788 Send Suspend Request to HAL
11789 -------------------------------------------------------------------------*/
11790 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11791 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11792
11793 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11794 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11795}/*WDI_ProcessExcludeUnencryptInd*/
11796#endif
11797
Yue Mab9c86f42013-08-14 15:59:08 -070011798/**
11799 @brief Process Add Periodic Tx Pattern Indication function (called when
11800 Main FSM allows it)
11801
11802 @param pWDICtx: pointer to the WLAN DAL context
11803 pEventData: pointer to the event information structure
11804
11805 @see
11806 @return Result of the function call
11807*/
11808WDI_Status
11809WDI_ProcessAddPeriodicTxPtrnInd
11810(
11811 WDI_ControlBlockType* pWDICtx,
11812 WDI_EventInfoType* pEventData
11813)
11814{
11815 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11816 wpt_uint8* pSendBuffer = NULL;
11817 wpt_uint16 usDataOffset = 0;
11818 wpt_uint16 usSendSize = 0;
11819 WDI_Status wdiStatus;
11820 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11821 wpt_uint8 selfStaIdx = 0;
11822
11823 /*-------------------------------------------------------------------------
11824 Sanity check
11825 -------------------------------------------------------------------------*/
11826 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11827 {
11828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11829 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11830 WDI_ASSERT(0);
11831 return WDI_STATUS_E_FAILURE;
11832 }
11833
11834 pAddPeriodicTxPtrnParams =
11835 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11836
11837 /*------------------------------------------------------------------------
11838 Get message buffer
11839 ------------------------------------------------------------------------*/
11840 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11841 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11842 &pSendBuffer, &usDataOffset, &usSendSize))||
11843 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11844 {
11845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11846 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11847 __func__);
11848 WDI_ASSERT(0);
11849 return WDI_STATUS_E_FAILURE;
11850 }
11851
11852 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11853
11854 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11855 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11856 &selfStaIdx))
11857 {
11858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11859 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011860 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011861
11862 return WDI_STATUS_E_FAILURE;
11863 }
11864
11865 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11866 halAddPeriodicTxPtrn->ucPtrnId =
11867 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11868 halAddPeriodicTxPtrn->usPtrnSize =
11869 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11870 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11871 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11872
11873 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11874 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11875 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11876
11877 /*-------------------------------------------------------------------------
11878 Send Indication to HAL
11879 -------------------------------------------------------------------------*/
11880 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11881 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11882
11883 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11884
11885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11886 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11887
11888 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11889} /* WDI_ProcessAddPeriodicTxPtrnInd */
11890
11891/**
11892 @brief Process Delete Periodic Tx Pattern Indication function (called when
11893 Main FSM allows it)
11894
11895 @param pWDICtx: pointer to the WLAN DAL context
11896 pEventData: pointer to the event information structure
11897
11898 @see
11899 @return Result of the function call
11900*/
11901WDI_Status
11902WDI_ProcessDelPeriodicTxPtrnInd
11903(
11904 WDI_ControlBlockType* pWDICtx,
11905 WDI_EventInfoType* pEventData
11906)
11907{
11908 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11909 wpt_uint8* pSendBuffer = NULL;
11910 wpt_uint16 usDataOffset = 0;
11911 wpt_uint16 usSendSize = 0;
11912 WDI_Status wdiStatus;
11913 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11914 wpt_uint8 selfStaIdx = 0;
11915
11916 /*-------------------------------------------------------------------------
11917 Sanity check
11918 -------------------------------------------------------------------------*/
11919 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11920 {
11921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11922 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11923 WDI_ASSERT(0);
11924 return WDI_STATUS_E_FAILURE;
11925 }
11926
11927 pDelPeriodicTxPtrnParams =
11928 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11929
11930 /*------------------------------------------------------------------------
11931 Get message buffer
11932 ------------------------------------------------------------------------*/
11933 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11934 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11935 &pSendBuffer, &usDataOffset, &usSendSize))||
11936 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11937 {
11938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11939 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11940 __func__);
11941 WDI_ASSERT(0);
11942 return WDI_STATUS_E_FAILURE;
11943 }
11944
11945 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11946
11947 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11948 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11949 &selfStaIdx))
11950 {
11951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11952 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011953 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011954
11955 return WDI_STATUS_E_FAILURE;
11956 }
11957
11958 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11959 halDelPeriodicTxPtrn->uPatternIdBitmap =
11960 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11961
11962 /*-------------------------------------------------------------------------
11963 Send Indication to HAL
11964 -------------------------------------------------------------------------*/
11965 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11966 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11967
11968 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11969
11970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11971 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11972
11973 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11974} /* WDI_ProcessDelPeriodicTxPtrnInd */
11975
Jeff Johnson295189b2012-06-20 16:38:30 -070011976/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011978==========================================================================*/
11979/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011980 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011982
11983 @param pWDICtx: pointer to the WLAN DAL context
11984 pEventData: pointer to the event information structure
11985
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 @see
11987 @return Result of the function call
11988*/
11989WDI_Status
11990WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011991(
Jeff Johnson295189b2012-06-20 16:38:30 -070011992 WDI_ControlBlockType* pWDICtx,
11993 WDI_EventInfoType* pEventData
11994)
11995{
11996 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11997 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011998 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 wpt_uint16 usDataOffset = 0;
12000 wpt_uint16 usSendSize = 0;
12001 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12003
12004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 -------------------------------------------------------------------------*/
12007 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12008 ( NULL == pEventData->pCBfnc ))
12009 {
12010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 }
12015
12016 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12017 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12018 /*-----------------------------------------------------------------------
12019 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 sizeof(halSwitchChannelReq.switchChannelParams),
12024 &pSendBuffer, &usDataOffset, &usSendSize))||
12025 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12026 {
12027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012028 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 }
12033
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012036#ifndef WLAN_FEATURE_VOWIFI
12037 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012038 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12039#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12042
12043#ifdef WLAN_FEATURE_VOWIFI
12044 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12047 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12048 WDI_MAC_ADDR_LEN);
12049 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12050 pwdiSwitchChParams->wdiChInfo.macBSSId,
12051 WDI_MAC_ADDR_LEN);
12052#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012053 wpalMemoryCopy( pSendBuffer+usDataOffset,
12054 &halSwitchChannelReq.switchChannelParams,
12055 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012056
12057 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012059
12060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12064 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012065}/*WDI_ProcessChannelSwitchReq*/
12066
12067/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012068 @brief Process Channel Switch Request function (called when
12069 Main FSM allows it)
12070
12071 @param pWDICtx: pointer to the WLAN DAL context
12072 pEventData: pointer to the event information structure
12073
12074 @see
12075 @return Result of the function call
12076*/
12077WDI_Status WDI_ProcessChannelSwitchReq_V1
12078(
12079 WDI_ControlBlockType* pWDICtx,
12080 WDI_EventInfoType* pEventData
12081)
12082{
12083 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12084 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12085 wpt_uint8* pSendBuffer = NULL;
12086 wpt_uint16 usDataOffset = 0;
12087 wpt_uint16 usSendSize = 0;
12088 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12090
12091 /*-------------------------------------------------------------------------
12092 Sanity check
12093 -------------------------------------------------------------------------*/
12094 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12095 ( NULL == pEventData->pCBfnc ))
12096 {
12097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12098 "%s: Invalid parameters", __func__);
12099 WDI_ASSERT(0);
12100 return WDI_STATUS_E_FAILURE;
12101 }
12102
12103 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12104 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12105 /*-----------------------------------------------------------------------
12106 Get message buffer
12107 ! TO DO : proper conversion into the HAL Message Request Format
12108 -----------------------------------------------------------------------*/
12109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12110 WDI_CH_SWITCH_REQ_V1,
12111 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12112 &pSendBuffer, &usDataOffset, &usSendSize))||
12113 ( usSendSize < (usDataOffset +
12114 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12115 {
12116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12117 "Unable to get send buffer in channel switch req %p %p %p",
12118 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12119 WDI_ASSERT(0);
12120 return WDI_STATUS_E_FAILURE;
12121 }
12122
12123 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12124 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12125
12126 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12127 pwdiSwitchChParams->wdiChInfo.ucChannel;
12128#ifndef WLAN_FEATURE_VOWIFI
12129 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12130 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12131#endif
12132 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12133 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12134
12135#ifdef WLAN_FEATURE_VOWIFI
12136 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12137 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12138 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12139 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12140 WDI_MAC_ADDR_LEN);
12141 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12142 pwdiSwitchChParams->wdiChInfo.macBSSId,
12143 WDI_MAC_ADDR_LEN);
12144#endif
12145 wpalMemoryCopy( pSendBuffer+usDataOffset,
12146 &halSwitchChannelReq.switchChannelParams_V1,
12147 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12148
12149 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12150 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12151
12152 /*-------------------------------------------------------------------------
12153 Send Switch Channel Request to HAL
12154 -------------------------------------------------------------------------*/
12155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12156 wdiSwitchChRspCb, pEventData->pUserData,
12157 WDI_CH_SWITCH_RESP_V1);
12158}/*WDI_ProcessChannelSwitchReq_V1*/
12159
12160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012161 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012163
12164 @param pWDICtx: pointer to the WLAN DAL context
12165 pEventData: pointer to the event information structure
12166
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 @see
12168 @return Result of the function call
12169*/
12170WDI_Status
12171WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012172(
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 WDI_ControlBlockType* pWDICtx,
12174 WDI_EventInfoType* pEventData
12175)
12176{
12177 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12178 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012179 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012180 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 wpt_uint16 usDataOffset = 0;
12183 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012184 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012185
Jeff Johnsone7245742012-09-05 17:12:55 -070012186 tConfigStaReqMsg halConfigStaReqMsg;
12187 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12189
12190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012192 -------------------------------------------------------------------------*/
12193 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12194 ( NULL == pEventData->pCBfnc ))
12195 {
12196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 }
12201
Abhishek Singh6927fa02014-06-27 17:19:55 +053012202 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12204 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12205 /*-------------------------------------------------------------------------
12206 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 -------------------------------------------------------------------------*/
12209 wpalMutexAcquire(&pWDICtx->wptMutex);
12210
12211 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12215 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12216 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012217
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12221 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12222 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012223
12224 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 }
12227
12228 /*------------------------------------------------------------------------
12229 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012231 ------------------------------------------------------------------------*/
12232 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12233 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12235 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12236 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012237
Jeff Johnsone7245742012-09-05 17:12:55 -070012238 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012239 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 }
12242
12243 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012244
12245 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12246#ifdef WLAN_FEATURE_11AC
12247 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012248 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 else
12250#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012251 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012252
Jeff Johnson295189b2012-06-20 16:38:30 -070012253 /*-----------------------------------------------------------------------
12254 Get message buffer
12255 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12257 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 {
12261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012262 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 }
12267
12268 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 &pwdiConfigSTAParams->wdiReqInfo);
12271
12272 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12273 {
12274 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 WDI_STATableFindStaidByAddr(pWDICtx,
12277 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 {
12280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012281 MAC_ADDRESS_STR
12282 ": This station does not exist in the WDI Station Table",
12283 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012285 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 }
12288 }
12289 else
12290 {
12291 /* Need to fill in the STA Index to invalid, since at this point we have not
12292 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012293 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012294 }
12295
12296 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012298
Jeff Johnsone7245742012-09-05 17:12:55 -070012299 wpalMemoryCopy( pSendBuffer+usDataOffset,
12300 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012301 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012302
12303 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012305
Jeff Johnsone7245742012-09-05 17:12:55 -070012306 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12307 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 sizeof(pWDICtx->wdiCachedConfigStaReq));
12309
12310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12314 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012315}/*WDI_ProcessConfigStaReq*/
12316
12317
12318/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012321
12322 @param pWDICtx: pointer to the WLAN DAL context
12323 pEventData: pointer to the event information structure
12324
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 @see
12326 @return Result of the function call
12327*/
12328WDI_Status
12329WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012330(
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 WDI_ControlBlockType* pWDICtx,
12332 WDI_EventInfoType* pEventData
12333)
12334{
12335 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12336 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 wpt_uint16 usDataOffset = 0;
12341 wpt_uint16 usSendSize = 0;
12342 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12345
12346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 -------------------------------------------------------------------------*/
12349 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12350 ( NULL == pEventData->pCBfnc ))
12351 {
12352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 }
12357
12358 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12359 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12360 /*-------------------------------------------------------------------------
12361 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 -------------------------------------------------------------------------*/
12364 wpalMutexAcquire(&pWDICtx->wptMutex);
12365
12366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012367 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012369 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12370 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12371 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012372
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012376 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12377 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 }
12379 else
12380 {
12381 /*------------------------------------------------------------------------
12382 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 ------------------------------------------------------------------------*/
12385 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12386 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12388 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12389 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12390
12391 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 }
12395 }
12396 /* If the link is set to enter IDLE - the Session allocated for this BSS
12397 will be deleted on the Set Link State response coming from HAL
12398 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12401
12402 wpalMutexRelease(&pWDICtx->wptMutex);
12403 /*-----------------------------------------------------------------------
12404 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012405 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012407
12408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012409 sizeof(halLinkStateReqMsg),
12410 &pSendBuffer, &usDataOffset, &usSendSize))||
12411 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12412 {
12413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012414 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 }
12419
12420 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12421 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12422
12423 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12424 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12425
Jeff Johnsone7245742012-09-05 17:12:55 -070012426 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012427 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12428
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 wpalMemoryCopy( pSendBuffer+usDataOffset,
12430 &halLinkStateReqMsg,
12431 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012432
12433 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012435
12436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012437 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012438 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012439 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12440 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012441}/*WDI_ProcessSetLinkStateReq*/
12442
12443
12444/**
12445 @brief Process Get Stats Request function (called when Main FSM
12446 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012447
12448 @param pWDICtx: pointer to the WLAN DAL context
12449 pEventData: pointer to the event information structure
12450
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 @see
12452 @return Result of the function call
12453*/
12454WDI_Status
12455WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012456(
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 WDI_ControlBlockType* pWDICtx,
12458 WDI_EventInfoType* pEventData
12459)
12460{
12461 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12462 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 wpt_uint16 usDataOffset = 0;
12465 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012466 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012467 WDI_BSSSessionType* pBSSSes = NULL;
12468 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 tHalStatsReqMsg halStatsReqMsg;
12471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12472
12473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 -------------------------------------------------------------------------*/
12476 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12477 ( NULL == pEventData->pCBfnc ) )
12478 {
12479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 }
12484
12485 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12486 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12487
12488 /*-------------------------------------------------------------------------
12489 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 -------------------------------------------------------------------------*/
12492 wpalMutexAcquire(&pWDICtx->wptMutex);
12493
12494 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12498 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012499 &macBSSID))
12500 {
12501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012502 "This station does not exist in the WDI Station Table %d",
12503 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 }
12507
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12509 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12512 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12513 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012514
12515 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 }
12518
12519 /*------------------------------------------------------------------------
12520 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012521 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 ------------------------------------------------------------------------*/
12523 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12524 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12526 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12527 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012528
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012531 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 }
12533
12534
12535 wpalMutexRelease(&pWDICtx->wptMutex);
12536
12537 /*-----------------------------------------------------------------------
12538 Get message buffer
12539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 sizeof(halStatsReqMsg.statsReqParams),
12542 &pSendBuffer, &usDataOffset, &usSendSize))||
12543 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12544 {
12545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012546 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 }
12551
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 wpalMemoryCopy( pSendBuffer+usDataOffset,
12557 &halStatsReqMsg.statsReqParams,
12558 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012559
12560 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012562
12563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12567 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012568}/*WDI_ProcessGetStatsReq*/
12569
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012570#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012571/**
12572 @brief Process Get Roam Rssi Request function (called when Main FSM
12573 allows it)
12574
12575 @param pWDICtx: pointer to the WLAN DAL context
12576 pEventData: pointer to the event information structure
12577
12578 @see
12579 @return Result of the function call
12580*/
12581WDI_Status
12582WDI_ProcessGetRoamRssiReq
12583(
12584 WDI_ControlBlockType* pWDICtx,
12585 WDI_EventInfoType* pEventData
12586)
12587{
12588 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12589 WDI_GetStatsRspCb wdiGetStatsRspCb;
12590 wpt_uint8* pSendBuffer = NULL;
12591 wpt_uint16 usDataOffset = 0;
12592 wpt_uint16 usSendSize = 0;
12593 wpt_uint8 ucCurrentBSSSesIdx = 0;
12594 WDI_BSSSessionType* pBSSSes = NULL;
12595 wpt_macAddr macBSSID;
12596 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12597 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12599 /*-------------------------------------------------------------------------
12600 Sanity check
12601 -------------------------------------------------------------------------*/
12602 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12603 ( NULL == pEventData->pCBfnc ) )
12604 {
12605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12606 "%s: Invalid parameters", __func__);
12607 WDI_ASSERT(0);
12608 return WDI_STATUS_E_FAILURE;
12609 }
12610
12611 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12612 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12613
12614 /*-------------------------------------------------------------------------
12615 Check to see if we are in the middle of an association, if so queue, if
12616 not it means it is free to process request
12617 -------------------------------------------------------------------------*/
12618 wpalMutexAcquire(&pWDICtx->wptMutex);
12619
12620 /*------------------------------------------------------------------------
12621 Find the BSS for which the request is made
12622 ------------------------------------------------------------------------*/
12623 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12624 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12625 &macBSSID))
12626 {
12627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012628 "This station does not exist in the WDI Station Table %d",
12629 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012630 wpalMutexRelease(&pWDICtx->wptMutex);
12631 return WDI_STATUS_E_FAILURE;
12632 }
12633
12634 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12635 if ( NULL == pBSSSes )
12636 {
12637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12638 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12639 __func__, MAC_ADDR_ARRAY(macBSSID));
12640
12641 wpalMutexRelease(&pWDICtx->wptMutex);
12642 return WDI_STATUS_E_NOT_ALLOWED;
12643 }
12644
12645 /*------------------------------------------------------------------------
12646 Check if this BSS is being currently processed or queued,
12647 if queued - queue the new request as well
12648 ------------------------------------------------------------------------*/
12649 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12650 {
12651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12652 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12653 __func__, MAC_ADDR_ARRAY(macBSSID));
12654
12655 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12656 wpalMutexRelease(&pWDICtx->wptMutex);
12657 return wdiStatus;
12658 }
12659
12660 wpalMutexRelease(&pWDICtx->wptMutex);
12661
12662 /*-----------------------------------------------------------------------
12663 Get message buffer
12664 -----------------------------------------------------------------------*/
12665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12666 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12667 &pSendBuffer, &usDataOffset, &usSendSize))||
12668 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12669 {
12670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012671 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012672 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12673 WDI_ASSERT(0);
12674 return WDI_STATUS_E_FAILURE;
12675 }
12676
12677 halRssiRoamReqMsg.roamRssiReqParams.staId =
12678 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12679 wpalMemoryCopy( pSendBuffer+usDataOffset,
12680 &halRssiRoamReqMsg.roamRssiReqParams,
12681 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12682
12683 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12684 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12685
12686 /*-------------------------------------------------------------------------
12687 Send Get STA Request to HAL
12688 -------------------------------------------------------------------------*/
12689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12690 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12691}/*WDI_ProcessGetRoamRssiReq*/
12692#endif
12693
Jeff Johnson295189b2012-06-20 16:38:30 -070012694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012697
12698 @param pWDICtx: pointer to the WLAN DAL context
12699 pEventData: pointer to the event information structure
12700
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 @see
12702 @return Result of the function call
12703*/
12704WDI_Status
12705WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012706(
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 WDI_ControlBlockType* pWDICtx,
12708 WDI_EventInfoType* pEventData
12709)
12710{
12711 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12712 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12713
Jeff Johnsone7245742012-09-05 17:12:55 -070012714 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012715 wpt_uint16 usDataOffset = 0;
12716 wpt_uint16 usSendSize = 0;
12717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12718
12719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 -------------------------------------------------------------------------*/
12722 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12723 ( NULL == pEventData->pCBfnc))
12724 {
12725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 }
12730
12731 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12732 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12733
12734 /*-----------------------------------------------------------------------
12735 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 -----------------------------------------------------------------------*/
12738
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12741 &pSendBuffer, &usDataOffset, &usSendSize))||
12742 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12743 {
12744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012745 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012746 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012749 }
12750
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 wpalMemoryCopy( pSendBuffer+usDataOffset,
12752 &pwdiUpdateCfgParams->uConfigBufferLen,
12753 sizeof(wpt_uint32));
12754 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12755 pwdiUpdateCfgParams->pConfigBuffer,
12756 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012757
12758 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012759 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012760
12761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012762 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 -------------------------------------------------------------------------*/
12764
Jeff Johnsone7245742012-09-05 17:12:55 -070012765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12766 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012767
12768}/*WDI_ProcessUpdateCfgReq*/
12769
12770
12771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012772 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012774
12775 @param pWDICtx: pointer to the WLAN DAL context
12776 pEventData: pointer to the event information structure
12777
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 @see
12779 @return Result of the function call
12780*/
12781WDI_Status
12782WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012783(
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 WDI_ControlBlockType* pWDICtx,
12785 WDI_EventInfoType* pEventData
12786)
12787{
12788 WDI_AddBAReqParamsType* pwdiAddBAParams;
12789 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012790 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 wpt_uint16 usDataOffset = 0;
12794 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 wpt_macAddr macBSSID;
12797
12798 tAddBAReqMsg halAddBAReq;
12799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12800
12801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 -------------------------------------------------------------------------*/
12804 if (( NULL == pEventData ) ||
12805 ( NULL == pEventData->pEventData) ||
12806 ( NULL == pEventData->pCBfnc ))
12807 {
12808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 }
12813
12814 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12815 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12816
12817 /*-------------------------------------------------------------------------
12818 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012819 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012820 -------------------------------------------------------------------------*/
12821 wpalMutexAcquire(&pWDICtx->wptMutex);
12822
12823 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12827 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012828 &macBSSID))
12829 {
12830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012831 "This station does not exist in the WDI Station Table %d",
12832 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012835 }
12836
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12838 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12841 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12842 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012843
12844 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 }
12847
12848 /*------------------------------------------------------------------------
12849 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 ------------------------------------------------------------------------*/
12852 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12853 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12855 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12856 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012857
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012860 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 }
12862
12863
12864 wpalMutexRelease(&pWDICtx->wptMutex);
12865 /*-----------------------------------------------------------------------
12866 Get message buffer
12867 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 sizeof(halAddBAReq.addBAParams),
12870 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12873 {
12874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012875 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 }
12880
Jeff Johnsone7245742012-09-05 17:12:55 -070012881 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012882 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12883 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12884#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12887#endif
12888
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 wpalMemoryCopy( pSendBuffer+usDataOffset,
12890 &halAddBAReq.addBAParams,
12891 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012892
12893 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012895
12896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12900 wdiAddBARspCb, pEventData->pUserData,
12901 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012902}/*WDI_ProcessAddBAReq*/
12903
12904
12905
12906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012908 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012909
12910 @param pWDICtx: pointer to the WLAN DAL context
12911 pEventData: pointer to the event information structure
12912
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 @see
12914 @return Result of the function call
12915*/
12916WDI_Status
12917WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012918(
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 WDI_ControlBlockType* pWDICtx,
12920 WDI_EventInfoType* pEventData
12921)
12922{
12923 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12924 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012927 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012928 wpt_uint16 usDataOffset = 0;
12929 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 wpt_uint16 index;
12932 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012933
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 tTriggerBAReqMsg halTriggerBAReq;
12935 tTriggerBaReqCandidate* halTriggerBACandidate;
12936 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12938
12939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 -------------------------------------------------------------------------*/
12942 if (( NULL == pEventData ) ||
12943 ( NULL == pEventData->pEventData ) ||
12944 ( NULL == pEventData->pCBfnc ))
12945 {
12946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 }
12951
12952 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12953 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12954 /*-------------------------------------------------------------------------
12955 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 -------------------------------------------------------------------------*/
12958 wpalMutexAcquire(&pWDICtx->wptMutex);
12959
12960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012962 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12964 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 &macBSSID))
12966 {
12967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012968 "This station does not exist in the WDI Station Table %d",
12969 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 }
12973
Jeff Johnsone7245742012-09-05 17:12:55 -070012974 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12975 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012976 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12978 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12979 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012980
12981 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 }
12984
12985 /*------------------------------------------------------------------------
12986 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012987 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 ------------------------------------------------------------------------*/
12989 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12990 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12992 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12993 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012994
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012997 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 }
12999
13000
13001 wpalMutexRelease(&pWDICtx->wptMutex);
13002 /*-----------------------------------------------------------------------
13003 Get message buffer
13004 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13006 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013008 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013009 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13010 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013011 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013012 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013013 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013014 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13015 {
13016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013017 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 }
13022
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13027
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 wpalMemoryCopy( pSendBuffer+usDataOffset,
13029 &halTriggerBAReq.triggerBAParams,
13030 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013031
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13034 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13035 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013036
13037 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 index++)
13039 {
13040 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13041 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13042 halTriggerBACandidate++;
13043 wdiTriggerBACandidate++;
13044 }
13045
13046 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013048
13049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13053 wdiTriggerBARspCb, pEventData->pUserData,
13054 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013055}/*WDI_ProcessTriggerBAReq*/
13056
13057
13058
13059/**
13060 @brief Process Update Beacon Params Request function (called when Main FSM
13061 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013062
13063 @param pWDICtx: pointer to the WLAN DAL context
13064 pEventData: pointer to the event information structure
13065
Jeff Johnson295189b2012-06-20 16:38:30 -070013066 @see
13067 @return Result of the function call
13068*/
13069WDI_Status
13070WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013071(
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 WDI_ControlBlockType* pWDICtx,
13073 WDI_EventInfoType* pEventData
13074)
13075{
13076 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13077 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 wpt_uint16 usDataOffset = 0;
13080 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013081 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13083
13084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 -------------------------------------------------------------------------*/
13087 if (( NULL == pEventData ) ||
13088 ( NULL == pEventData->pEventData) ||
13089 ( NULL == pEventData->pCBfnc))
13090 {
13091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013095 }
13096
13097 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13098 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13099 /*-----------------------------------------------------------------------
13100 Get message buffer
13101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 sizeof(halUpdateBeaconParams),
13104 &pSendBuffer, &usDataOffset, &usSendSize))||
13105 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13106 {
13107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013108 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013112 }
13113
13114 /*BSS Index of the BSS*/
13115 halUpdateBeaconParams.bssIdx =
13116 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13117 /*shortPreamble mode. HAL should update all the STA rates when it
13118 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013120 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13121 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013122 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013123 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13124 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013125 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013126 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13127
13128 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013129 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013135 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013137 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13141 halUpdateBeaconParams.fRIFSMode =
13142 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13145
Jeff Johnsone7245742012-09-05 17:12:55 -070013146 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13147 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013148
13149 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013150 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013151
13152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13156 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013157}/*WDI_ProcessUpdateBeaconParamsReq*/
13158
13159
13160
13161/**
13162 @brief Process Send Beacon template Request function (called when Main FSM
13163 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013164
13165 @param pWDICtx: pointer to the WLAN DAL context
13166 pEventData: pointer to the event information structure
13167
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 @see
13169 @return Result of the function call
13170*/
13171WDI_Status
13172WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013173(
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 WDI_ControlBlockType* pWDICtx,
13175 WDI_EventInfoType* pEventData
13176)
13177{
13178 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13179 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 wpt_uint16 usDataOffset = 0;
13182 wpt_uint16 usSendSize = 0;
13183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13184
13185 tSendBeaconReqMsg halSendBeaconReq;
13186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 -------------------------------------------------------------------------*/
13189 if (( NULL == pEventData ) ||
13190 ( NULL == pEventData->pEventData ) ||
13191 ( NULL == pEventData->pCBfnc ))
13192 {
13193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 }
13198
13199 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13200 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13201 /*-----------------------------------------------------------------------
13202 Get message buffer
13203 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 sizeof(halSendBeaconReq.sendBeaconParam),
13206 &pSendBuffer, &usDataOffset, &usSendSize))||
13207 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13208 {
13209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013210 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013214 }
13215
13216 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13217 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13218 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13221 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13222 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13223 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013226 /* usP2PIeOffset should be atleast greater than timIeOffset */
13227 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13228 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13229 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13230 {
13231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13232 "Invalid usP2PIeOffset %hu",
13233 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13234 WDI_ASSERT(0);
13235 return WDI_STATUS_E_FAILURE;
13236 }
13237
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013240
Jeff Johnsone7245742012-09-05 17:12:55 -070013241 wpalMemoryCopy( pSendBuffer+usDataOffset,
13242 &halSendBeaconReq.sendBeaconParam,
13243 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013244
13245 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013246 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013247
13248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013249 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13252 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013253}/*WDI_ProcessSendBeaconParamsReq*/
13254
13255/**
13256 @brief Process Update Beacon Params Request function (called when Main FSM
13257 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013258
13259 @param pWDICtx: pointer to the WLAN DAL context
13260 pEventData: pointer to the event information structure
13261
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 @see
13263 @return Result of the function call
13264*/
13265WDI_Status
13266WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013267(
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 WDI_ControlBlockType* pWDICtx,
13269 WDI_EventInfoType* pEventData
13270)
13271{
13272 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13273 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 wpt_uint16 usDataOffset = 0;
13276 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13279
13280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 -------------------------------------------------------------------------*/
13283 if (( NULL == pEventData ) ||
13284 ( NULL == pEventData->pEventData) ||
13285 ( NULL == pEventData->pCBfnc))
13286 {
13287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 }
13292
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13297 /*-----------------------------------------------------------------------
13298 Get message buffer
13299 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013300 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 sizeof(halUpdateProbeRspTmplParams),
13302 &pSendBuffer, &usDataOffset, &usSendSize))||
13303 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13304 {
13305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013306 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 }
13311
13312 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 WDI_MAC_ADDR_LEN);
13315
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13318
13319 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13320 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013321 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013322
13323
13324 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13325 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13326 WDI_PROBE_REQ_BITMAP_IE_LEN);
13327
Jeff Johnsone7245742012-09-05 17:12:55 -070013328 wpalMemoryCopy( pSendBuffer+usDataOffset,
13329 &halUpdateProbeRspTmplParams,
13330 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013331
13332 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013334
13335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13339 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13340 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013341}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13342
13343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013346
13347 @param pWDICtx: pointer to the WLAN DAL context
13348 pEventData: pointer to the event information structure
13349
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 @see
13351 @return Result of the function call
13352*/
13353WDI_Status
13354WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013355(
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 WDI_ControlBlockType* pWDICtx,
13357 WDI_EventInfoType* pEventData
13358)
13359{
13360
13361 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13362 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13363
13364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 -------------------------------------------------------------------------*/
13367 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13372 {
13373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 }
13378
13379 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13382
13383 /*cache the wdi nv request message here if the the first fragment
13384 * To issue the request to HAL for the next fragment */
13385 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13386 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013387 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13388 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13390
13391 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13392 pWDICtx->pRspCBUserData = pEventData->pUserData;
13393 }
13394
13395 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13396}
13397
13398/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013401
13402 @param pWDICtx: pointer to the WLAN DAL context
13403 pEventData: pointer to the event information structure
13404
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 @see
13406 @return Result of the function call
13407*/
13408WDI_Status WDI_ProcessSetMaxTxPowerReq
13409(
13410 WDI_ControlBlockType* pWDICtx,
13411 WDI_EventInfoType* pEventData
13412)
13413{
13414 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13415 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 wpt_uint16 usDataOffset = 0;
13418 wpt_uint16 usSendSize = 0;
13419 tSetMaxTxPwrReq halSetMaxTxPower;
13420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13421
13422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013424 -------------------------------------------------------------------------*/
13425 if (( NULL == pEventData ) ||
13426 ( NULL == pEventData->pEventData ) ||
13427 ( NULL == pEventData->pCBfnc ))
13428 {
13429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013430 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013433 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13438
13439 /*-----------------------------------------------------------------------
13440 Get message buffer
13441 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013442if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013443 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13444 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013446)))
13447 {
13448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013449 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013450 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013453 }
13454
13455 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13456 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13457 WDI_MAC_ADDR_LEN);
13458
13459 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13460 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13461 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013464
13465 wpalMemoryCopy( pSendBuffer+usDataOffset,
13466 &halSetMaxTxPower.setMaxTxPwrParams,
13467 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013468
13469 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013471
13472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13476 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13477 WDI_SET_MAX_TX_POWER_RESP);
13478
Jeff Johnson295189b2012-06-20 16:38:30 -070013479}
13480
Arif Hussaina5ebce02013-08-09 15:09:58 -070013481/*
13482 @brief Process Set Max Tx Power Per Band Request function (called when Main
13483 FSM allows it)
13484
13485 @param pWDICtx: pointer to the WLAN DAL context
13486 pEventData: pointer to the event information structure
13487
13488 @see
13489 @return Result of the function call
13490*/
13491WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13492(
13493 WDI_ControlBlockType* pWDICtx,
13494 WDI_EventInfoType* pEventData
13495)
13496{
13497 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13498 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13499 wpt_uint8* pSendBuffer = NULL;
13500 wpt_uint16 usDataOffset = 0;
13501 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013502 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013503 WDI_Status rValue = WDI_STATUS_SUCCESS;
13504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13505
13506 /*-------------------------------------------------------------------------
13507 Sanity check
13508 -------------------------------------------------------------------------*/
13509 if (( NULL == pEventData ) ||
13510 ( NULL == pEventData->pEventData ) ||
13511 ( NULL == pEventData->pCBfnc ))
13512 {
13513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13514 "%s: Invalid parameters", __func__);
13515 WDI_ASSERT(0);
13516 return WDI_STATUS_E_FAILURE;
13517 }
13518 pwdiSetMaxTxPowerPerBandParams = \
13519 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13520
13521 wdiSetMaxTxPowerPerBandRspCb = \
13522 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13523
13524 /*-----------------------------------------------------------------------
13525 Get message buffer
13526 -----------------------------------------------------------------------*/
13527
13528 rValue = WDI_GetMessageBuffer(pWDICtx,
13529 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13530 sizeof(tSetMaxTxPwrPerBandParams),
13531 &pSendBuffer, &usDataOffset, &usSendSize);
13532
13533 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13534 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13535 {
13536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13537 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13538 pEventData, pwdiSetMaxTxPowerPerBandParams,
13539 wdiSetMaxTxPowerPerBandRspCb);
13540 WDI_ASSERT(0);
13541 return WDI_STATUS_E_FAILURE;
13542 }
13543
13544
Arif Hussainf8f080c2014-04-03 09:48:36 -070013545 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13546 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013547 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13548
Arif Hussainf8f080c2014-04-03 09:48:36 -070013549 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013550 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13551
13552 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13553 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13554
13555 /*-------------------------------------------------------------------------
13556 Send Set Max Tx Power Per Band Request to HAL
13557 -------------------------------------------------------------------------*/
13558 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13559 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13560 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13561}
13562
schang86c22c42013-03-13 18:41:24 -070013563/**
13564 @brief Process Set Tx Power Request function (called when Main
13565 FSM allows it)
13566
13567 @param pWDICtx: pointer to the WLAN DAL context
13568 pEventData: pointer to the event information structure
13569
13570 @see
13571 @return Result of the function call
13572*/
13573WDI_Status WDI_ProcessSetTxPowerReq
13574(
13575 WDI_ControlBlockType* pWDICtx,
13576 WDI_EventInfoType* pEventData
13577)
13578{
13579 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13580 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13581 wpt_uint8* pSendBuffer = NULL;
13582 wpt_uint16 usDataOffset = 0;
13583 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013584 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13586
13587 /*-------------------------------------------------------------------------
13588 Sanity check
13589 -------------------------------------------------------------------------*/
13590 if (( NULL == pEventData ) ||
13591 ( NULL == pEventData->pEventData ) ||
13592 ( NULL == pEventData->pCBfnc ))
13593 {
13594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13595 "%s: Invalid parameters", __func__);
13596 WDI_ASSERT(0);
13597 return WDI_STATUS_E_FAILURE;
13598 }
13599
13600 pwdiSetTxPowerParams =
13601 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13602 wdiSetTxPowerRspCb =
13603 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13604
13605 /*-----------------------------------------------------------------------
13606 Get message buffer
13607 -----------------------------------------------------------------------*/
13608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13609 sizeof(tSetTxPwrReqParams),
13610 &pSendBuffer, &usDataOffset, &usSendSize))||
13611 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13612 )))
13613 {
13614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013615 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013616 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13617 WDI_ASSERT(0);
13618 return WDI_STATUS_E_FAILURE;
13619 }
13620
Leo Chang9a43db92013-03-25 17:39:58 -070013621 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13622 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13623 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013624
13625 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13626 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13627
13628 /*-------------------------------------------------------------------------
13629 Send Set Tx Power Request to HAL
13630 -------------------------------------------------------------------------*/
13631 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13632 wdiSetTxPowerRspCb, pEventData->pUserData,
13633 WDI_SET_TX_POWER_RESP);
13634}
Jeff Johnson295189b2012-06-20 16:38:30 -070013635
13636/**
13637 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13638 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013639
13640 @param pWDICtx: pointer to the WLAN DAL context
13641 pEventData: pointer to the event information structure
13642
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 @see
13644 @return Result of the function call
13645*/
13646WDI_Status
13647WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013648(
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 WDI_ControlBlockType* pWDICtx,
13650 WDI_EventInfoType* pEventData
13651)
13652{
13653 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13654 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 wpt_uint16 usDataOffset = 0;
13657 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13660
13661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 -------------------------------------------------------------------------*/
13664 if (( NULL == pEventData ) ||
13665 ( NULL == pEventData->pEventData) ||
13666 ( NULL == pEventData->pCBfnc))
13667 {
13668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 }
13673
Jeff Johnsone7245742012-09-05 17:12:55 -070013674 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013675 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13678 /*-----------------------------------------------------------------------
13679 Get message buffer
13680 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013681 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13682 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 sizeof(halSetP2PGONOAParams),
13684 &pSendBuffer, &usDataOffset, &usSendSize))||
13685 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13686 {
13687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013688 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013689 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 }
13693
Jeff Johnsone7245742012-09-05 17:12:55 -070013694 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013695 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13698 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013699 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013701 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013702 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013703 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013704 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13707
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 wpalMemoryCopy( pSendBuffer+usDataOffset,
13709 &halSetP2PGONOAParams,
13710 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013711
13712 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013714
13715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13719 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13720 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013721}/*WDI_ProcessP2PGONOAReq*/
13722
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013723#ifdef FEATURE_WLAN_TDLS
13724
13725/**
13726 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13727 allows it)
13728
13729 @param pWDICtx: pointer to the WLAN DAL context
13730 pEventData: pointer to the event information structure
13731
13732 @see
13733 @return Result of the function call
13734*/
13735WDI_Status
13736WDI_ProcessTdlsLinkEstablishReq
13737(
13738 WDI_ControlBlockType* pWDICtx,
13739 WDI_EventInfoType* pEventData
13740)
13741{
13742 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13743 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13744 wpt_uint8* pSendBuffer = NULL;
13745 wpt_uint16 usDataOffset = 0;
13746 wpt_uint16 usSendSize = 0;
13747
13748 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13750
13751 /*-------------------------------------------------------------------------
13752 Sanity check
13753 -------------------------------------------------------------------------*/
13754 if (( NULL == pEventData ) ||
13755 ( NULL == pEventData->pEventData) ||
13756 ( NULL == pEventData->pCBfnc))
13757 {
13758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13759 "%s: Invalid parameters", __func__);
13760 WDI_ASSERT(0);
13761 return WDI_STATUS_E_FAILURE;
13762 }
13763 pwdiTDLSLinkEstablishReqParams =
13764 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13765 wdiTDLSLinkEstablishReqRspCb =
13766 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13767
13768
13769 /*-----------------------------------------------------------------------
13770 Get message buffer
13771 -----------------------------------------------------------------------*/
13772 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13773 WDI_TDLS_LINK_ESTABLISH_REQ,
13774 sizeof(halSetTDLSLinkEstablishParams),
13775 &pSendBuffer, &usDataOffset, &usSendSize))||
13776 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13777 {
13778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013779 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013780 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13781 WDI_ASSERT(0);
13782 return WDI_STATUS_E_FAILURE;
13783 }
13784
13785 halSetTDLSLinkEstablishParams.staIdx =
13786 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13787 halSetTDLSLinkEstablishParams.bIsResponder =
13788 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13789 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13790 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13791 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13792 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13793 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13794 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13795 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13796 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13797 halSetTDLSLinkEstablishParams.aAck = 0;
13798 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13799 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13800 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013801 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13802 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13803
13804 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13805 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13806 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13807 halSetTDLSLinkEstablishParams.validChannelsLen =
13808 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13809
13810 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13811 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13812 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13813 halSetTDLSLinkEstablishParams.validOperClassesLen =
13814 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013815
13816 wpalMemoryCopy( pSendBuffer+usDataOffset,
13817 &halSetTDLSLinkEstablishParams,
13818 sizeof(halSetTDLSLinkEstablishParams));
13819
13820 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13821 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13822
13823 /*-------------------------------------------------------------------------
13824 Send Update Probe Resp Template Request to HAL
13825 -------------------------------------------------------------------------*/
13826 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13827 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13828 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13829 return 0;
13830}/*WDI_ProcessTdlsLinkEstablishReq*/
13831
13832
Atul Mittalc0f739f2014-07-31 13:47:47 +053013833/**
13834 @brief sends the channel switch command to f/w (called when Main FSM
13835 allows it)
13836
13837 @param pWDICtx: pointer to the WLAN DAL context
13838 pEventData: pointer to the event information structure
13839
13840 @see
13841 @return Result of the function call
13842*/
13843WDI_Status
13844WDI_ProcessTdlsChanSwitchReq
13845(
13846 WDI_ControlBlockType* pWDICtx,
13847 WDI_EventInfoType* pEventData
13848)
13849{
13850 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13851 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13852 wpt_uint8* pSendBuffer = NULL;
13853 wpt_uint16 usDataOffset = 0;
13854 wpt_uint16 usSendSize = 0;
13855 //WDI_Status wdiStatus;
13856 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13858
13859 /*-------------------------------------------------------------------------
13860 Sanity check
13861 -------------------------------------------------------------------------*/
13862 if (( NULL == pEventData ) ||
13863 ( NULL == pEventData->pEventData))
13864 {
13865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13866 "%s: Invalid parameters", __func__);
13867 WDI_ASSERT(0);
13868 return WDI_STATUS_E_FAILURE;
13869 }
13870 pwdiTDLSChanSwitchReqParams =
13871 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13872 wdiTDLSChanSwitchReqRspCb =
13873 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13874
13875 /*-----------------------------------------------------------------------
13876 Get message buffer
13877 -----------------------------------------------------------------------*/
13878 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13879 WDI_TDLS_CHAN_SWITCH_REQ,
13880 sizeof(halSetTDLSChanSwitchParams),
13881 &pSendBuffer, &usDataOffset, &usSendSize))||
13882 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13883 {
13884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13885 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13886 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13887 WDI_ASSERT(0);
13888 return WDI_STATUS_E_FAILURE;
13889 }
13890
13891 halSetTDLSChanSwitchParams.staIdx =
13892 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13893 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13894 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13895 halSetTDLSChanSwitchParams.targetOperClass =
13896 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13897 halSetTDLSChanSwitchParams.targetChannel =
13898 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13899 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13900 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13901 wpalMemoryCopy( pSendBuffer+usDataOffset,
13902 &halSetTDLSChanSwitchParams,
13903 sizeof(halSetTDLSChanSwitchParams));
13904
13905 pWDICtx->wdiReqStatusCB = NULL;
13906 pWDICtx->pReqStatusUserData = NULL;
13907
13908 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13909 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13910 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13911}/*WDI_ProcessTdlsChanSwitchReq*/
13912
13913#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013914
Jeff Johnson295189b2012-06-20 16:38:30 -070013915
13916
13917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013920 @param None
13921
13922 @see
13923 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013924*/
13925void
13926WDI_SetPowerStateCb
13927(
13928 wpt_status status,
13929 unsigned int dxePhyAddr,
13930 void *pContext
13931)
13932{
13933 wpt_status wptStatus;
13934 WDI_ControlBlockType *pCB = NULL;
13935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013936 /*
13937 * Trigger the event to bring the Enter BMPS req function to come
13938 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013939*/
13940 if( NULL != pContext )
13941 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013942 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013943 }
13944 else
13945 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 pCB = &gWDICb;
13948 }
Mihir Shetea4306052014-03-25 00:02:54 +053013949
13950 if(eWLAN_PAL_STATUS_SUCCESS == status )
13951 {
13952 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13953 }
13954 else
13955 {
13956 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13957 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 pCB->dxePhyAddr = dxePhyAddr;
13959 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13960 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13961 {
13962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13963 "Failed to set an event");
13964
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 }
13967 return;
13968}
13969
13970
13971/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013974
13975 @param pWDICtx: pointer to the WLAN DAL context
13976 pEventData: pointer to the event information structure
13977
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 @see
13979 @return Result of the function call
13980*/
13981WDI_Status
13982WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013983(
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 WDI_ControlBlockType* pWDICtx,
13985 WDI_EventInfoType* pEventData
13986)
13987{
Jeff Johnson43971f52012-07-17 12:26:56 -070013988 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 wpt_uint16 usDataOffset = 0;
13992 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013993 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13995
13996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013999 if ((NULL == pEventData ) ||
14000 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14001 (NULL == (pwdiEnterImpsReqParams =
14002 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014003 {
14004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014006 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014007 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 }
14009
14010 /*-----------------------------------------------------------------------
14011 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 0,
14016 &pSendBuffer, &usDataOffset, &usSendSize))||
14017 ( usSendSize < (usDataOffset )))
14018 {
14019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014020 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014021 pEventData, wdiEnterImpsRspCb);
14022 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014023 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 }
14025
14026 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014027 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14028 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 {
14030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14031 "WDI Init failed to reset an event");
14032
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014034 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 }
14036
14037 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014038 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14039 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014041 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014042 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014043 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014044 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014045
14046 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014047 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014049 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14050 WDI_SET_POWER_STATE_TIMEOUT);
14051 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 {
14053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14054 "WDI Init failed to wait on an event");
14055
Jeff Johnsone7245742012-09-05 17:12:55 -070014056 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014057 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 }
14059
Mihir Shetea4306052014-03-25 00:02:54 +053014060 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14061 {
14062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14063 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14064
14065 goto fail;
14066 }
14067
14068 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14069 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14074 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014075
14076fail:
14077 // Release the message buffer so we don't leak
14078 wpalMemoryFree(pSendBuffer);
14079
14080failRequest:
14081 //WDA should have failure check to avoid the memory leak
14082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014083}/*WDI_ProcessEnterImpsReq*/
14084
14085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014086 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014088
14089 @param pWDICtx: pointer to the WLAN DAL context
14090 pEventData: pointer to the event information structure
14091
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 @see
14093 @return Result of the function call
14094*/
14095WDI_Status
14096WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014097(
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 WDI_ControlBlockType* pWDICtx,
14099 WDI_EventInfoType* pEventData
14100)
14101{
14102 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 wpt_uint16 usDataOffset = 0;
14105 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014106 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14108
14109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014111 -------------------------------------------------------------------------*/
14112 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014113 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14114 (NULL == (pwdiExitImpsReqParams =
14115 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 {
14117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 }
14122
14123 /*-----------------------------------------------------------------------
14124 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014128 0,
14129 &pSendBuffer, &usDataOffset, &usSendSize))||
14130 ( usSendSize < (usDataOffset )))
14131 {
14132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014133 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 pEventData, wdiExitImpsRspCb);
14135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014137 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014138 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14139 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14144 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014145}/*WDI_ProcessExitImpsReq*/
14146
14147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014148 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014150
14151 @param pWDICtx: pointer to the WLAN DAL context
14152 pEventData: pointer to the event information structure
14153
Jeff Johnson295189b2012-06-20 16:38:30 -070014154 @see
14155 @return Result of the function call
14156*/
14157WDI_Status
14158WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014159(
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 WDI_ControlBlockType* pWDICtx,
14161 WDI_EventInfoType* pEventData
14162)
14163{
14164 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14165 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 wpt_uint16 usDataOffset = 0;
14168 wpt_uint16 usSendSize = 0;
14169 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014170 wpt_status wptStatus;
14171
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14173
14174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 -------------------------------------------------------------------------*/
14177 if (( NULL == pEventData ) ||
14178 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14179 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14180 {
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);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014184 goto failRequest;
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_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 sizeof(enterBmpsReq),
14193 &pSendBuffer, &usDataOffset, &usSendSize))||
14194 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
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 Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14199 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014200 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 }
14202
14203 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014204 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14205 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 {
14207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14208 "WDI Init failed to reset an event");
14209
Jeff Johnsone7245742012-09-05 17:12:55 -070014210 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014211 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 }
14213
14214 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014215 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14216 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14217 {
14218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014219 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014220 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014221 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014222 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014223
14224/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014225 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014227 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14228 WDI_SET_POWER_STATE_TIMEOUT);
14229 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 {
14231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14232 "WDI Init failed to wait on an event");
14233
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014235 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 }
14237
14238 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14239
14240 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14241 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14242 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14243 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14244
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014245 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14247 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14248 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14249
14250 wpalMemoryCopy( pSendBuffer+usDataOffset,
14251 &enterBmpsReq,
14252 sizeof(enterBmpsReq));
14253
14254 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014256
14257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014258 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14261 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014262
14263fail:
14264 // Release the message buffer so we don't leak
14265 wpalMemoryFree(pSendBuffer);
14266
14267failRequest:
14268 //WDA should have failure check to avoid the memory leak
14269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014270}/*WDI_ProcessEnterBmpsReq*/
14271
14272/**
14273 @brief Process Exit BMPS Request function (called when Main FSM
14274 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014275
14276 @param pWDICtx: pointer to the WLAN DAL context
14277 pEventData: pointer to the event information structure
14278
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 @see
14280 @return Result of the function call
14281*/
14282WDI_Status
14283WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014284(
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 WDI_ControlBlockType* pWDICtx,
14286 WDI_EventInfoType* pEventData
14287)
14288{
14289 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14290 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 wpt_uint16 usDataOffset = 0;
14293 wpt_uint16 usSendSize = 0;
14294 tHalExitBmpsReqParams exitBmpsReq;
14295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14296
14297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 -------------------------------------------------------------------------*/
14300 if (( NULL == pEventData ) ||
14301 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14302 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14303 {
14304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 }
14309
14310 /*-----------------------------------------------------------------------
14311 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014312 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 sizeof(exitBmpsReq),
14316 &pSendBuffer, &usDataOffset, &usSendSize))||
14317 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14318 {
14319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014320 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 }
14325 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14326
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14328
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 wpalMemoryCopy( pSendBuffer+usDataOffset,
14330 &exitBmpsReq,
14331 sizeof(exitBmpsReq));
14332
14333 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014335
14336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14340 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014341}/*WDI_ProcessExitBmpsReq*/
14342
14343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014346
14347 @param pWDICtx: pointer to the WLAN DAL context
14348 pEventData: pointer to the event information structure
14349
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 @see
14351 @return Result of the function call
14352*/
14353WDI_Status
14354WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014355(
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 WDI_ControlBlockType* pWDICtx,
14357 WDI_EventInfoType* pEventData
14358)
14359{
14360 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14361 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 wpt_uint16 usDataOffset = 0;
14364 wpt_uint16 usSendSize = 0;
14365 tUapsdReqParams enterUapsdReq;
14366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14367
14368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 -------------------------------------------------------------------------*/
14371 if (( NULL == pEventData ) ||
14372 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14373 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14374 {
14375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 }
14380
14381 /*-----------------------------------------------------------------------
14382 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 sizeof(enterUapsdReq),
14387 &pSendBuffer, &usDataOffset, &usSendSize))||
14388 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14389 {
14390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014391 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014392 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 }
14396
14397 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14398 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14399 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14400 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14401 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14402 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14403 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14404 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014406
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 wpalMemoryCopy( pSendBuffer+usDataOffset,
14408 &enterUapsdReq,
14409 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014410
14411 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014412 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014413
14414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14418 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014419}/*WDI_ProcessEnterUapsdReq*/
14420
14421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014424
14425 @param pWDICtx: pointer to the WLAN DAL context
14426 pEventData: pointer to the event information structure
14427
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 @see
14429 @return Result of the function call
14430*/
14431WDI_Status
14432WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014433(
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 WDI_ControlBlockType* pWDICtx,
14435 WDI_EventInfoType* pEventData
14436)
14437{
14438 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 wpt_uint16 usDataOffset = 0;
14441 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014442 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14443 wpt_uint8 bssIdx = 0;
14444
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14446
14447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 -------------------------------------------------------------------------*/
14450 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014451 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14453 {
14454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 }
14459
14460 /*-----------------------------------------------------------------------
14461 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014462 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014465 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014467 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 {
14469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014470 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 pEventData, wdiExitUapsdRspCb);
14472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 }
14475
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014476 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14477
14478 wpalMemoryCopy( pSendBuffer+usDataOffset,
14479 &bssIdx,
14480 sizeof(wpt_uint8));
14481
14482 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14483 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14484
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14489 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014490}/*WDI_ProcessExitUapsdReq*/
14491
14492/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014495
14496 @param pWDICtx: pointer to the WLAN DAL context
14497 pEventData: pointer to the event information structure
14498
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 @see
14500 @return Result of the function call
14501*/
14502WDI_Status
14503WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014504(
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 WDI_ControlBlockType* pWDICtx,
14506 WDI_EventInfoType* pEventData
14507)
14508{
14509 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14510 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 wpt_uint16 usDataOffset = 0;
14513 wpt_uint16 usSendSize = 0;
14514 tUapsdInfo uapsdAcParamsReq;
14515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14516
14517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 -------------------------------------------------------------------------*/
14520 if (( NULL == pEventData ) ||
14521 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14522 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14523 {
14524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 }
14529
14530 /*-----------------------------------------------------------------------
14531 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014532 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 sizeof(uapsdAcParamsReq),
14536 &pSendBuffer, &usDataOffset, &usSendSize))||
14537 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14538 {
14539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014540 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 }
14545
14546 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14547 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14548 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14549 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14550 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14551 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14552
Jeff Johnsone7245742012-09-05 17:12:55 -070014553 wpalMemoryCopy( pSendBuffer+usDataOffset,
14554 &uapsdAcParamsReq,
14555 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014556
14557 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014558 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014559
14560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14564 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014565}/*WDI_ProcessSetUapsdAcParamsReq*/
14566
14567/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014568 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014569 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014570
14571 @param pWDICtx: pointer to the WLAN DAL context
14572 pEventData: pointer to the event information structure
14573
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 @see
14575 @return Result of the function call
14576*/
14577WDI_Status
14578WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014579(
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 WDI_ControlBlockType* pWDICtx,
14581 WDI_EventInfoType* pEventData
14582)
14583{
14584 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14585 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 wpt_uint16 usDataOffset = 0;
14588 wpt_uint16 usSendSize = 0;
14589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14590
14591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 -------------------------------------------------------------------------*/
14594 if (( NULL == pEventData ) ||
14595 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14596 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14597 {
14598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 }
14603
14604 /*-----------------------------------------------------------------------
14605 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014606 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014609 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14610 &pSendBuffer, &usDataOffset, &usSendSize))||
14611 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14612 {
14613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014614 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 }
14619
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 wpalMemoryCopy( pSendBuffer+usDataOffset,
14621 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14622 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014623
14624 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014625 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014626
14627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14631 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014632}/*WDI_ProcessUpdateUapsdParamsReq*/
14633
14634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014635 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014637
14638 @param pWDICtx: pointer to the WLAN DAL context
14639 pEventData: pointer to the event information structure
14640
Jeff Johnson295189b2012-06-20 16:38:30 -070014641 @see
14642 @return Result of the function call
14643*/
14644WDI_Status
14645WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014646(
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 WDI_ControlBlockType* pWDICtx,
14648 WDI_EventInfoType* pEventData
14649)
14650{
14651 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14652 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 wpt_uint16 usDataOffset = 0;
14655 wpt_uint16 usSendSize = 0;
14656 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14657
14658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14659
14660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 -------------------------------------------------------------------------*/
14663 if (( NULL == pEventData ) ||
14664 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14665 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14666 {
14667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 }
14672
14673 /*-----------------------------------------------------------------------
14674 Get message buffer
14675 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 sizeof(halRxpFilterParams),
14678 &pSendBuffer, &usDataOffset, &usSendSize))||
14679 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14680 {
14681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014682 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014683 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 }
14687
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14692
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 wpalMemoryCopy( pSendBuffer+usDataOffset,
14694 &halRxpFilterParams,
14695 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014696
14697 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014699
14700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14704 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014705}/*WDI_ProcessConfigureRxpFilterReq*/
14706
14707/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014708 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014710
14711 @param pWDICtx: pointer to the WLAN DAL context
14712 pEventData: pointer to the event information structure
14713
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 @see
14715 @return Result of the function call
14716*/
14717WDI_Status
14718WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014719(
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 WDI_ControlBlockType* pWDICtx,
14721 WDI_EventInfoType* pEventData
14722)
14723{
14724 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14725 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 wpt_uint16 usDataOffset = 0;
14728 wpt_uint16 usSendSize = 0;
14729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14730
14731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 -------------------------------------------------------------------------*/
14734 if (( NULL == pEventData ) ||
14735 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14736 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14737 {
14738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 }
14743
14744 /*-----------------------------------------------------------------------
14745 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014746 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14750 &pSendBuffer, &usDataOffset, &usSendSize))||
14751 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14752 {
14753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014754 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 }
14759
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 wpalMemoryCopy( pSendBuffer+usDataOffset,
14761 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14762 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14763 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14764 &pwdiBeaconFilterParams->aFilters[0],
14765 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014766
14767 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014769
14770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014771 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14774 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014775}/*WDI_ProcessSetBeaconFilterReq*/
14776
14777/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014780
14781 @param pWDICtx: pointer to the WLAN DAL context
14782 pEventData: pointer to the event information structure
14783
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 @see
14785 @return Result of the function call
14786*/
14787WDI_Status
14788WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014789(
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 WDI_ControlBlockType* pWDICtx,
14791 WDI_EventInfoType* pEventData
14792)
14793{
14794 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14795 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 wpt_uint16 usDataOffset = 0;
14798 wpt_uint16 usSendSize = 0;
14799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14800
14801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 -------------------------------------------------------------------------*/
14804 if (( NULL == pEventData ) ||
14805 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14806 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14807 {
14808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 }
14813
14814 /*-----------------------------------------------------------------------
14815 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14820 &pSendBuffer, &usDataOffset, &usSendSize))||
14821 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14822 {
14823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014824 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 }
14829
Jeff Johnsone7245742012-09-05 17:12:55 -070014830 wpalMemoryCopy( pSendBuffer+usDataOffset,
14831 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14832 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014833
14834 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014835 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014836
14837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014838 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014839 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14841 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014842}
14843
14844/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014847
14848 @param pWDICtx: pointer to the WLAN DAL context
14849 pEventData: pointer to the event information structure
14850
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 @see
14852 @return Result of the function call
14853*/
14854WDI_Status
14855WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014856(
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 WDI_ControlBlockType* pWDICtx,
14858 WDI_EventInfoType* pEventData
14859)
14860{
14861 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14862 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 wpt_uint16 usDataOffset = 0;
14865 wpt_uint16 usSendSize = 0;
14866 tHalRSSIThresholds rssiThresholdsReq;
14867 WDI_Status ret_status = 0;
14868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14869
14870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 -------------------------------------------------------------------------*/
14873 if (( NULL == pEventData ) ||
14874 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14875 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14876 {
14877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 }
14882
14883 /*-----------------------------------------------------------------------
14884 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 sizeof(rssiThresholdsReq),
14889 &pSendBuffer, &usDataOffset, &usSendSize))||
14890 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14891 {
14892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014893 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 }
14898
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14919
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 wpalMemoryCopy( pSendBuffer+usDataOffset,
14921 &rssiThresholdsReq,
14922 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014923
14924 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014926
14927 /*-------------------------------------------------------------------------
14928 Send Set threshold req to HAL
14929 -------------------------------------------------------------------------*/
14930 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14931 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14932 {
14933 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14934 // req. Then as a result of processing the threshold cross ind, we trigger
14935 // a Set threshold req, then we need to indicate to WDI that it needs to
14936 // go to busy state as a result of the indication as we sent a req in the
14937 // same WDI context.
14938 // Hence expected state transition is to busy.
14939 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14940 }
14941
14942 return ret_status;
14943}
14944
14945/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014948
14949 @param pWDICtx: pointer to the WLAN DAL context
14950 pEventData: pointer to the event information structure
14951
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 @see
14953 @return Result of the function call
14954*/
14955WDI_Status
14956WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014957(
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 WDI_ControlBlockType* pWDICtx,
14959 WDI_EventInfoType* pEventData
14960)
14961{
14962 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14963 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014964 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014965 wpt_uint16 usDataOffset = 0;
14966 wpt_uint16 usSendSize = 0;
14967 tHalHostOffloadReq hostOffloadParams;
14968 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014969 wpt_uint8 ucCurrentBSSSesIdx = 0;
14970 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014971
14972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14973
14974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 -------------------------------------------------------------------------*/
14977 if (( NULL == pEventData ) ||
14978 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14979 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14980 {
14981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014984 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 }
14986
14987 /*-----------------------------------------------------------------------
14988 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14993 &pSendBuffer, &usDataOffset, &usSendSize))||
14994 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14995 {
14996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014997 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14999 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015000 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 }
15002
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015003 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15004 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15005 &pBSSSes);
15006 if ( NULL == pBSSSes )
15007 {
c_hpothu86feba52014-10-28 15:51:18 +053015008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015009 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15010 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015011 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015012 }
15013
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15015 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015016
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15018 {
15019 // ARP Offload
15020 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15021 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15022 4);
15023 }
15024 else
15025 {
15026 // NS Offload
15027 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15028 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15029 16);
15030
15031#ifdef WLAN_NS_OFFLOAD
15032 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15033 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15034 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15035 16);
15036 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15037 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15038 16);
15039 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15040 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15041 16);
15042 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15043 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15044 16);
15045 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15046 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15047 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015048 nsOffloadParams.srcIPv6AddrValid =
15049 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15050
15051 nsOffloadParams.targetIPv6Addr1Valid =
15052 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15053
15054 nsOffloadParams.targetIPv6Addr2Valid =
15055 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15056
15057 nsOffloadParams.slotIndex =
15058 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015059
Jeff Johnson295189b2012-06-20 16:38:30 -070015060#endif // WLAN_NS_OFFLOAD
15061 }
15062
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015063 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15064
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 // copy hostOffloadParams into pSendBuffer
15066 wpalMemoryCopy( pSendBuffer+usDataOffset,
15067 &hostOffloadParams,
15068 sizeof(hostOffloadParams));
15069
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015070 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015072 // copy nsOffloadParams into pSendBuffer
15073 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015074 &nsOffloadParams,
15075 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015076 }
15077 else
15078 {
15079#ifdef WLAN_NS_OFFLOAD
15080 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15081 {
15082 // copy nsOffloadParams into pSendBuffer
15083 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15084 &nsOffloadParams,
15085 sizeof(nsOffloadParams));
15086 }
15087#endif
15088 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015089
15090 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015091 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015092
15093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015094 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15097 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015098
15099fail:
15100 // Release the message buffer so we don't leak
15101 wpalMemoryFree(pSendBuffer);
15102
15103failRequest:
15104 //WDA should have failure check to avoid the memory leak
15105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015106}/*WDI_ProcessHostOffloadReq*/
15107
15108/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015111
15112 @param pWDICtx: pointer to the WLAN DAL context
15113 pEventData: pointer to the event information structure
15114
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 @see
15116 @return Result of the function call
15117*/
15118WDI_Status
15119WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015120(
Jeff Johnson295189b2012-06-20 16:38:30 -070015121 WDI_ControlBlockType* pWDICtx,
15122 WDI_EventInfoType* pEventData
15123)
15124{
15125 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15126 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015127 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015128 wpt_uint16 usDataOffset = 0;
15129 wpt_uint16 usSendSize = 0;
15130 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015131 wpt_uint8 ucCurrentBSSSesIdx = 0;
15132 WDI_BSSSessionType* pBSSSes = NULL;
15133
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15135
15136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 -------------------------------------------------------------------------*/
15139 if (( NULL == pEventData ) ||
15140 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15141 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15142 {
15143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15144 "Invalid parameters in Keep Alive req");
15145 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015146 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015147 }
15148
15149 /*-----------------------------------------------------------------------
15150 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015151 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015153 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 sizeof(keepAliveReq),
15155 &pSendBuffer, &usDataOffset, &usSendSize))||
15156 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15157 {
15158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015159 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15161 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015162 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 }
15164
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015165 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15166 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15167 &pBSSSes);
15168 if ( NULL == pBSSSes )
15169 {
15170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015171 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015172 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015173 }
15174
Jeff Johnson295189b2012-06-20 16:38:30 -070015175 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15176 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15177
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015178 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015179
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15181 {
15182 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15183 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15184 HAL_IPV4_ADDR_LEN);
15185 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15186 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 wpalMemoryCopy(keepAliveReq.destMacAddr,
15189 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15190 HAL_MAC_ADDR_LEN);
15191 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015192
15193 wpalMemoryCopy( pSendBuffer+usDataOffset,
15194 &keepAliveReq,
15195 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015196
15197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015198 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015199
15200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015201 "Process keep alive req time period %d",
15202 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015203
15204 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015206
15207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15208 "Sending keep alive req to HAL");
15209
15210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15214 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015215
15216fail:
15217 // Release the message buffer so we don't leak
15218 wpalMemoryFree(pSendBuffer);
15219
15220failRequest:
15221 //WDA should have failure check to avoid the memory leak
15222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015223}/*WDI_ProcessKeepAliveReq*/
15224
15225
15226/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015227 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015228 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015229
15230 @param pWDICtx: pointer to the WLAN DAL context
15231 pEventData: pointer to the event information structure
15232
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 @see
15234 @return Result of the function call
15235*/
15236WDI_Status
15237WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015238(
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 WDI_ControlBlockType* pWDICtx,
15240 WDI_EventInfoType* pEventData
15241)
15242{
15243 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15244 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 wpt_uint16 usDataOffset = 0;
15247 wpt_uint16 usSendSize = 0;
15248 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015249 wpt_uint8 ucCurrentBSSSesIdx = 0;
15250 WDI_BSSSessionType* pBSSSes = NULL;
15251
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15253
15254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 -------------------------------------------------------------------------*/
15257 if (( NULL == pEventData ) ||
15258 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15259 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15260 {
15261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015264 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 }
15266
15267 /*-----------------------------------------------------------------------
15268 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015272 sizeof(wowlAddBcPtrnReq),
15273 &pSendBuffer, &usDataOffset, &usSendSize))||
15274 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15275 {
15276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015277 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15279 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015280 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 }
15282
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015283 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15284 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15285 &pBSSSes);
15286 if ( NULL == pBSSSes )
15287 {
15288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015289 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015290 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015291 }
15292
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015297 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15301
15302 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15303 {
15304 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15305 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15306 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15307 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15308 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15309 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15310 }
15311 else
15312 {
15313 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15314 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15315 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15316 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15317 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15318 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15319
15320 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15321 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15322 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15323 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15324 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15325 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15326 }
15327
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015328 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15329
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 wpalMemoryCopy( pSendBuffer+usDataOffset,
15331 &wowlAddBcPtrnReq,
15332 sizeof(wowlAddBcPtrnReq));
15333
15334 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015336
15337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015340 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15341 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015342fail:
15343 // Release the message buffer so we don't leak
15344 wpalMemoryFree(pSendBuffer);
15345
15346failRequest:
15347 //WDA should have failure check to avoid the memory leak
15348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015349}/*WDI_ProcessWowlAddBcPtrnReq*/
15350
15351/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015354
15355 @param pWDICtx: pointer to the WLAN DAL context
15356 pEventData: pointer to the event information structure
15357
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 @see
15359 @return Result of the function call
15360*/
15361WDI_Status
15362WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015363(
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 WDI_ControlBlockType* pWDICtx,
15365 WDI_EventInfoType* pEventData
15366)
15367{
15368 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15369 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 wpt_uint16 usDataOffset = 0;
15372 wpt_uint16 usSendSize = 0;
15373 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015374 wpt_uint8 ucCurrentBSSSesIdx = 0;
15375 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15377
15378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015380 -------------------------------------------------------------------------*/
15381 if (( NULL == pEventData ) ||
15382 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15383 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15384 {
15385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015388 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 }
15390
15391 /*-----------------------------------------------------------------------
15392 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 sizeof(wowlDelBcPtrnReq),
15397 &pSendBuffer, &usDataOffset, &usSendSize))||
15398 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15399 {
15400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015401 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015402 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15403 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015404 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 }
15406
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015407 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15408 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15409 &pBSSSes);
15410 if ( NULL == pBSSSes )
15411 {
15412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015413 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015414 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015415 }
15416
Jeff Johnsone7245742012-09-05 17:12:55 -070015417 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015419
15420 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15421
Jeff Johnsone7245742012-09-05 17:12:55 -070015422 wpalMemoryCopy( pSendBuffer+usDataOffset,
15423 &wowlDelBcPtrnReq,
15424 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015425
15426 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015427 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015428
15429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015430 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15433 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015434
15435fail:
15436 // Release the message buffer so we don't leak
15437 wpalMemoryFree(pSendBuffer);
15438
15439failRequest:
15440 //WDA should have failure check to avoid the memory leak
15441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015442}/*WDI_ProcessWowlDelBcPtrnReq*/
15443
15444/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015445 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015447
15448 @param pWDICtx: pointer to the WLAN DAL context
15449 pEventData: pointer to the event information structure
15450
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 @see
15452 @return Result of the function call
15453*/
15454WDI_Status
15455WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015456(
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 WDI_ControlBlockType* pWDICtx,
15458 WDI_EventInfoType* pEventData
15459)
15460{
15461 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15462 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015464 wpt_uint16 usDataOffset = 0;
15465 wpt_uint16 usSendSize = 0;
15466 tHalWowlEnterParams wowlEnterReq;
15467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15468
15469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 -------------------------------------------------------------------------*/
15472 if (( NULL == pEventData ) ||
15473 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15474 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15475 {
15476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 }
15481
15482 /*-----------------------------------------------------------------------
15483 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015484 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 sizeof(wowlEnterReq),
15488 &pSendBuffer, &usDataOffset, &usSendSize))||
15489 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15490 {
15491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015492 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015493 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 }
15497
Kumar Anandaca924e2013-07-22 14:35:34 -070015498 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15499
Jeff Johnsone7245742012-09-05 17:12:55 -070015500 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015501 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015502 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015507 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015508 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015509 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015510 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015512 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015514 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15516
15517#ifdef WLAN_WAKEUP_EVENTS
15518 wowlEnterReq.ucWoWEAPIDRequestEnable =
15519 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15520
15521 wowlEnterReq.ucWoWEAPOL4WayEnable =
15522 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15523
15524 wowlEnterReq.ucWowNetScanOffloadMatch =
15525 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15526
15527 wowlEnterReq.ucWowGTKRekeyError =
15528 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15529
15530 wowlEnterReq.ucWoWBSSConnLoss =
15531 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15532#endif // WLAN_WAKEUP_EVENTS
15533
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015534 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15535
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15537 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15538 sizeof(tSirMacAddr));
15539
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 wpalMemoryCopy( pSendBuffer+usDataOffset,
15541 &wowlEnterReq,
15542 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015543
15544 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546
15547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015548 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015550 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15551 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015552}/*WDI_ProcessWowlEnterReq*/
15553
15554/**
15555 @brief Process Wowl exit Request function (called when Main FSM
15556 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015557
15558 @param pWDICtx: pointer to the WLAN DAL context
15559 pEventData: pointer to the event information structure
15560
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 @see
15562 @return Result of the function call
15563*/
15564WDI_Status
15565WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015566(
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 WDI_ControlBlockType* pWDICtx,
15568 WDI_EventInfoType* pEventData
15569)
15570{
15571 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015572 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 wpt_uint16 usDataOffset = 0;
15575 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015576 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15578
15579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 -------------------------------------------------------------------------*/
15582 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015583 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15585 {
15586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 }
15591
15592 /*-----------------------------------------------------------------------
15593 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015597 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015599 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 {
15601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015602 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 pEventData, wdiWowlExitCb);
15604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 }
15607
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015608 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15609
15610 wpalMemoryCopy( pSendBuffer+usDataOffset,
15611 &wowlExitparams,
15612 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15617 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015618}/*WDI_ProcessWowlExitReq*/
15619
15620/**
15621 @brief Process Configure Apps Cpu Wakeup State Request function
15622 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015623
15624 @param pWDICtx: pointer to the WLAN DAL context
15625 pEventData: pointer to the event information structure
15626
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 @see
15628 @return Result of the function call
15629*/
15630WDI_Status
15631WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015632(
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 WDI_ControlBlockType* pWDICtx,
15634 WDI_EventInfoType* pEventData
15635)
15636{
15637 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15638 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 wpt_uint16 usDataOffset = 0;
15641 wpt_uint16 usSendSize = 0;
15642 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15644
15645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 -------------------------------------------------------------------------*/
15648 if (( NULL == pEventData ) ||
15649 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15650 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15651 {
15652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 }
15657
15658 /*-----------------------------------------------------------------------
15659 Get message buffer
15660 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 sizeof(halCfgAppsCpuWakeupStateReqParams),
15663 &pSendBuffer, &usDataOffset, &usSendSize))||
15664 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15665 {
15666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015667 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015671 }
15672
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15675
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 wpalMemoryCopy( pSendBuffer+usDataOffset,
15677 &halCfgAppsCpuWakeupStateReqParams,
15678 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015679
15680 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015682
15683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15687 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15688 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015689}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15690
15691#ifdef WLAN_FEATURE_VOWIFI_11R
15692/**
15693 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15694 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015695
15696 @param pWDICtx: pointer to the WLAN DAL context
15697 pEventData: pointer to the event information structure
15698
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 @see
15700 @return Result of the function call
15701*/
15702WDI_Status
15703WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015704(
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 WDI_ControlBlockType* pWDICtx,
15706 WDI_EventInfoType* pEventData
15707)
15708{
15709 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15710 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 wpt_uint16 usDataOffset = 0;
15715 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015716 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 wpt_macAddr macBSSID;
15718 tAggrAddTsReq halAggrAddTsReq;
15719 int i;
15720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15721
15722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 -------------------------------------------------------------------------*/
15725 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15726 ( NULL == pEventData->pCBfnc ))
15727 {
15728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 }
15733 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15734 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15735 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15736 /*-------------------------------------------------------------------------
15737 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015739 -------------------------------------------------------------------------*/
15740 wpalMutexAcquire(&pWDICtx->wptMutex);
15741
15742 /*------------------------------------------------------------------------
15743 Find the BSS for which the request is made and identify WDI session
15744 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15746 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 &macBSSID))
15748 {
15749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015750 "This station does not exist in the WDI Station Table %d",
15751 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 }
15755
Jeff Johnsone7245742012-09-05 17:12:55 -070015756 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15757 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15760 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15761 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015762
15763 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015766
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 /*------------------------------------------------------------------------
15768 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 ------------------------------------------------------------------------*/
15771 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15772 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15774 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15775 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015776
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 }
15781
15782 wpalMutexRelease(&pWDICtx->wptMutex);
15783 /*-----------------------------------------------------------------------
15784 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015787 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 sizeof(tAggrAddTsParams),
15789 &pSendBuffer, &usDataOffset, &usSendSize))||
15790 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15791 {
15792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015793 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 }
15798
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15803
15804 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15805 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15812 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015813 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15815 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15818 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015820 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15821 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15824 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15827 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015828 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15830 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15833 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015834 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015838
15839
15840 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015858 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015859 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015862 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15870 }
15871
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 wpalMemoryCopy( pSendBuffer+usDataOffset,
15873 &halAggrAddTsReq,
15874 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015875
15876 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015878
15879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015885}/*WDI_ProcessAggrAddTSpecReq*/
15886#endif /* WLAN_FEATURE_VOWIFI_11R */
15887
15888/**
15889 @brief Process Shutdown Request function (called when Main FSM
15890 allows it)
15891
15892 @param pWDICtx: pointer to the WLAN DAL context
15893 pEventData: pointer to the event information structure
15894
15895 @see
15896 @return Result of the function call
15897*/
15898WDI_Status
15899WDI_ProcessShutdownReq
15900(
15901 WDI_ControlBlockType* pWDICtx,
15902 WDI_EventInfoType* pEventData
15903 )
15904{
15905 wpt_status wptStatus;
15906
15907
15908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15909
15910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 -------------------------------------------------------------------------*/
15913 if ( NULL == pEventData )
15914 {
15915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 WDI_ASSERT(0);
15918 return WDI_STATUS_E_FAILURE;
15919 }
15920
15921 wpalMutexAcquire(&pWDICtx->wptMutex);
15922
15923
15924 gWDIInitialized = eWLAN_PAL_FALSE;
15925 /*! TO DO: stop the data services */
15926 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15927 {
15928 /*Stop the STA Table !UT- check this logic again
15929 It is safer to do it here than on the response - because a stop is imminent*/
15930 WDI_STATableStop(pWDICtx);
15931
15932 /* Stop Transport Driver, DXE */
15933 WDTS_Stop(pWDICtx);
15934 }
15935
15936 /*Clear all pending request*/
15937 WDI_ClearPendingRequests(pWDICtx);
15938 /* Close Data transport*/
15939 /* FTM mode does not open Data Path */
15940 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15941 {
15942 WDTS_Close(pWDICtx);
15943 }
15944 /*Close the STA Table !UT- check this logic again*/
15945 WDI_STATableClose(pWDICtx);
15946 /*close the PAL */
15947 wptStatus = wpalClose(pWDICtx->pPALContext);
15948 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15949 {
15950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15951 "Failed to wpal Close %d", wptStatus);
15952 WDI_ASSERT(0);
15953 }
15954
15955 /*Transition back to init state*/
15956 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15957
15958 wpalMutexRelease(&pWDICtx->wptMutex);
15959
15960 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015962
15963
Jeff Johnsone7245742012-09-05 17:12:55 -070015964 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015965}/*WDI_ProcessShutdownReq*/
15966
15967/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015969========================================================================*/
15970
15971/**
15972 @brief Process Start Response function (called when a response
15973 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015974
15975 @param pWDICtx: pointer to the WLAN DAL context
15976 pEventData: pointer to the event information structure
15977
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 @see
15979 @return Result of the function call
15980*/
15981WDI_Status
15982WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015983(
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 WDI_ControlBlockType* pWDICtx,
15985 WDI_EventInfoType* pEventData
15986)
15987{
15988 WDI_StartRspParamsType wdiRspParams;
15989 WDI_StartRspCb wdiStartRspCb = NULL;
15990
15991 tHalMacStartRspParams* startRspParams;
15992
15993#ifndef HAL_SELF_STA_PER_BSS
15994 WDI_AddStaParams wdiAddSTAParam = {0};
15995#endif
15996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15997
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016001 -------------------------------------------------------------------------*/
16002 if (( NULL == pEventData ) ||
16003 ( NULL == pEventData->pEventData) ||
16004 ( NULL == wdiStartRspCb ))
16005 {
16006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 }
16011
16012 /*-------------------------------------------------------------------------
16013 Extract response and send it to UMAC
16014 -------------------------------------------------------------------------*/
16015 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16016 {
16017 // not enough data was received
16018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016019 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016020 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016023 }
16024
16025 /*-------------------------------------------------------------------------
16026 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016028 -------------------------------------------------------------------------*/
16029 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16030
16031 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16032 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16033 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16034 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16035 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16036 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16037 wdiRspParams.wlanReportedVersion.major =
16038 startRspParams->wcnssWlanVersion.major;
16039 wdiRspParams.wlanReportedVersion.minor =
16040 startRspParams->wcnssWlanVersion.minor;
16041 wdiRspParams.wlanReportedVersion.version =
16042 startRspParams->wcnssWlanVersion.version;
16043 wdiRspParams.wlanReportedVersion.revision =
16044 startRspParams->wcnssWlanVersion.revision;
16045 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16046 startRspParams->wcnssCrmVersionString,
16047 sizeof(wdiRspParams.wcnssSoftwareVersion));
16048 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16049 startRspParams->wcnssWlanVersionString,
16050 sizeof(wdiRspParams.wcnssHardwareVersion));
16051 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16052
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016053 /*Save the HAL Version*/
16054 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16055
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 wpalMutexAcquire(&pWDICtx->wptMutex);
16057 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16058 {
16059 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16060
16061 /*Cache the start response for further use*/
16062 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016063 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 sizeof(pWDICtx->wdiCachedStartRspParams));
16065
16066 }
16067 else
16068 {
16069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16070 "Failed to start device with status %s(%d)",
16071 WDI_getHALStatusMsgString(startRspParams->status),
16072 startRspParams->status);
16073
16074 /*Set the expected state transition to stopped - because the start has
16075 failed*/
16076 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16077
16078 wpalMutexRelease(&pWDICtx->wptMutex);
16079
16080 /*Notify UMAC*/
16081 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016082
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016084 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016085
16086 /*Although the response is an error - it was processed by our function
16087 so as far as the caller is concerned this is a succesful reponse processing*/
16088 return WDI_STATUS_SUCCESS;
16089 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016090
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 wpalMutexRelease(&pWDICtx->wptMutex);
16092
16093 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16094 {
16095 /* FTM mode does not need to execute below */
16096 /* Notify UMAC */
16097 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16098 return WDI_STATUS_SUCCESS;
16099 }
16100
16101 /* START the Data transport */
16102 WDTS_startTransport(pWDICtx);
16103
16104 /*Start the STA Table !- check this logic again*/
16105 WDI_STATableStart(pWDICtx);
16106
16107#ifndef HAL_SELF_STA_PER_BSS
16108 /* Store the Self STA Index */
16109 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16110
16111 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16112 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16113 WDI_MAC_ADDR_LEN);
16114
16115 /* At this point add the self-STA */
16116
16117 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16118 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16119 /*! TO DO: wdiAddSTAParam.dpuSig */
16120 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16121 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16122 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16123
16124 //all DPU indices are the same for self STA
16125 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16126 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016127 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16129 WDI_MAC_ADDR_LEN);
16130 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16131 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16132
16133 /* Note: Since we don't get an explicit config STA request for self STA, we
16134 add the self STA upon receiving the Start response message. But the
16135 self STA entry in the table is deleted when WDI gets an explicit delete STA
16136 request */
16137 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16138#endif
16139
16140 /*Notify UMAC*/
16141 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16142
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016144}/*WDI_ProcessStartRsp*/
16145
16146
16147/**
16148 @brief Process Stop Response function (called when a response
16149 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016150
16151 @param pWDICtx: pointer to the WLAN DAL context
16152 pEventData: pointer to the event information structure
16153
Jeff Johnson295189b2012-06-20 16:38:30 -070016154 @see
16155 @return Result of the function call
16156*/
16157WDI_Status
16158WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016159(
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 WDI_ControlBlockType* pWDICtx,
16161 WDI_EventInfoType* pEventData
16162)
16163{
16164 WDI_Status wdiStatus;
16165 WDI_StopRspCb wdiStopRspCb = NULL;
16166
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16169
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 -------------------------------------------------------------------------*/
16174 if (( NULL == pEventData ) ||
16175 ( NULL == pEventData->pEventData) ||
16176 ( NULL == wdiStopRspCb ))
16177 {
16178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 }
16183
16184 /*-------------------------------------------------------------------------
16185 Extract response and send it to UMAC
16186 -------------------------------------------------------------------------*/
16187 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16188 {
16189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016190 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 pEventData->uEventDataSize);
16192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 }
16195
16196 /*-------------------------------------------------------------------------
16197 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16201 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 sizeof(halMacStopRspMsg.stopRspParams));
16203
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016205
16206 wpalMutexAcquire(&pWDICtx->wptMutex);
16207
16208 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 --------------------------------------------------------------------------*/
16211 if ( WDI_STATUS_SUCCESS != wdiStatus )
16212 {
16213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16214 "Failed to stop the device with status %s (%d)",
16215 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16216 halMacStopRspMsg.stopRspParams.status);
16217
Jeff Johnsone7245742012-09-05 17:12:55 -070016218 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016219 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016220
Jeff Johnson295189b2012-06-20 16:38:30 -070016221 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016224
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16226
16227 /*Transition now as WDI may get preempted imediately after it sends
16228 up the Stop Response and it will not get to process the state transition
16229 from Main Rsp function*/
16230 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16231 wpalMutexRelease(&pWDICtx->wptMutex);
16232
16233 /*! TO DO: - STOP the Data transport */
16234
16235 /*Notify UMAC*/
16236 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16237
Jeff Johnsone7245742012-09-05 17:12:55 -070016238 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016239}/*WDI_ProcessStopRsp*/
16240
16241/**
16242 @brief Process Close Rsp function (called when a response
16243 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016244
16245 @param pWDICtx: pointer to the WLAN DAL context
16246 pEventData: pointer to the event information structure
16247
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 @see
16249 @return Result of the function call
16250*/
16251WDI_Status
16252WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016253(
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 WDI_ControlBlockType* pWDICtx,
16255 WDI_EventInfoType* pEventData
16256)
16257{
16258 /*There is no close response comming from HAL - function just kept for
16259 simmetry */
16260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016262}/*WDI_ProcessCloseRsp*/
16263
16264
16265/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016267============================================================================*/
16268
16269/**
16270 @brief Process Init Scan Rsp function (called when a response
16271 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016272
16273 @param pWDICtx: pointer to the WLAN DAL context
16274 pEventData: pointer to the event information structure
16275
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 @see
16277 @return Result of the function call
16278*/
16279WDI_Status
16280WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016281(
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 WDI_ControlBlockType* pWDICtx,
16283 WDI_EventInfoType* pEventData
16284)
16285{
16286 WDI_Status wdiStatus;
16287 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016289 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16291
16292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 -------------------------------------------------------------------------*/
16295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16296 ( NULL == pEventData->pEventData))
16297 {
16298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 }
16303
16304 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16305 if( NULL == wdiInitScanRspCb)
16306 {
16307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016308 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016311 }
16312
16313 /*-------------------------------------------------------------------------
16314 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016315 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16318 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016319 sizeof(halInitScanRspMsg.initScanRspParams));
16320
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016322
16323 if ( pWDICtx->bInBmps )
16324 {
16325 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016326 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16327 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016329 "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 -080016330 WDI_ASSERT(0);
16331 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016332 }
16333
16334 /*Notify UMAC*/
16335 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16336
Jeff Johnsone7245742012-09-05 17:12:55 -070016337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016338}/*WDI_ProcessInitScanRsp*/
16339
16340
16341/**
16342 @brief Process Start Scan Rsp function (called when a response
16343 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016344
16345 @param pWDICtx: pointer to the WLAN DAL context
16346 pEventData: pointer to the event information structure
16347
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 @see
16349 @return Result of the function call
16350*/
16351WDI_Status
16352WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016353(
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 WDI_ControlBlockType* pWDICtx,
16355 WDI_EventInfoType* pEventData
16356)
16357{
16358 WDI_StartScanRspParamsType wdiStartScanParams;
16359 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016360
16361 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16363
16364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016366 -------------------------------------------------------------------------*/
16367 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16368 ( NULL == pEventData->pEventData))
16369 {
16370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016374 }
16375
16376 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16377 if( NULL == wdiStartScanRspCb)
16378 {
16379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016380 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 }
16384
16385 /*-------------------------------------------------------------------------
16386 Extract response and send it to UMAC
16387 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16389 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 sizeof(halStartScanRspMsg.startScanRspParams));
16391
16392 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16393 halStartScanRspMsg.startScanRspParams.status);
16394#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016395 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 halStartScanRspMsg.startScanRspParams.startTSF,
16399 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016400#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016401
16402 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16403 {
16404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16405 "Start scan failed with status %s (%d)",
16406 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16407 halStartScanRspMsg.startScanRspParams.status);
16408 /* send the status to UMAC, don't return from here*/
16409 }
16410
16411 /*Notify UMAC*/
16412 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16413
Jeff Johnsone7245742012-09-05 17:12:55 -070016414 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016415
16416}/*WDI_ProcessStartScanRsp*/
16417
16418
16419/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016422
16423 @param pWDICtx: pointer to the WLAN DAL context
16424 pEventData: pointer to the event information structure
16425
Jeff Johnson295189b2012-06-20 16:38:30 -070016426 @see
16427 @return Result of the function call
16428*/
16429WDI_Status
16430WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016431(
Jeff Johnson295189b2012-06-20 16:38:30 -070016432 WDI_ControlBlockType* pWDICtx,
16433 WDI_EventInfoType* pEventData
16434)
16435{
16436 WDI_Status wdiStatus;
16437 tHalEndScanRspMsg halEndScanRspMsg;
16438 WDI_EndScanRspCb wdiEndScanRspCb;
16439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16440
16441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016443 -------------------------------------------------------------------------*/
16444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16445 ( NULL == pEventData->pEventData))
16446 {
16447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016451 }
16452
16453 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16454
16455 /*-------------------------------------------------------------------------
16456 Extract response and send it to UMAC
16457 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016458 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16459 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016460 sizeof(halEndScanRspMsg.endScanRspParams));
16461
Jeff Johnsone7245742012-09-05 17:12:55 -070016462 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016463
16464 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16465 {
16466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16467 "End Scan failed with status %s (%d )",
16468 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16469 halEndScanRspMsg.endScanRspParams.status);
16470 /* send the status to UMAC, don't return from here*/
16471 }
16472
16473 /*Notify UMAC*/
16474 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16475
Jeff Johnsone7245742012-09-05 17:12:55 -070016476 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016477}/*WDI_ProcessEndScanRsp*/
16478
16479
16480/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016482 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016483
16484 @param pWDICtx: pointer to the WLAN DAL context
16485 pEventData: pointer to the event information structure
16486
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 @see
16488 @return Result of the function call
16489*/
16490WDI_Status
16491WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016492(
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 WDI_ControlBlockType* pWDICtx,
16494 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016495)
Jeff Johnson295189b2012-06-20 16:38:30 -070016496{
16497 WDI_Status wdiStatus;
16498 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016499
16500 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16502
16503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 -------------------------------------------------------------------------*/
16506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16507 ( NULL == pEventData->pEventData))
16508 {
16509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 }
16514
16515 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16516
16517 /*-------------------------------------------------------------------------
16518 Extract response and send it to UMAC
16519 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16521 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16523
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016525
16526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 halFinishScanRspMsg.finishScanRspParams.status);
16529
16530 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16531 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16532 {
16533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16534 "Finish Scan failed with status %s (%d)",
16535 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16536 halFinishScanRspMsg.finishScanRspParams.status);
16537 /* send the status to UMAC, don't return from here*/
16538 }
16539
16540 /*Notify UMAC*/
16541 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16542
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016544}/*WDI_ProcessFinishScanRsp*/
16545
16546/**
16547 @brief Process Join Response function (called when a response
16548 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016549
16550 @param pWDICtx: pointer to the WLAN DAL context
16551 pEventData: pointer to the event information structure
16552
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 @see
16554 @return Result of the function call
16555*/
16556WDI_Status
16557WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016558(
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 WDI_ControlBlockType* pWDICtx,
16560 WDI_EventInfoType* pEventData
16561)
16562{
16563 WDI_Status wdiStatus;
16564 WDI_JoinRspCb wdiJoinRspCb;
16565 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016566
16567 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16569
16570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 -------------------------------------------------------------------------*/
16573 if (( NULL == pWDICtx ) ||
16574 ( NULL == pWDICtx->pfncRspCB ) ||
16575 ( NULL == pEventData ) ||
16576 ( NULL == pEventData->pEventData))
16577 {
16578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 }
16583
16584 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16585
16586 /*-------------------------------------------------------------------------
16587 Extract response and send it to UMAC
16588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16590 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 sizeof(halJoinRspMsg.joinRspParams));
16592
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016594
16595 wpalMutexAcquire(&pWDICtx->wptMutex);
16596
16597 /*-----------------------------------------------------------------------
16598 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16603 {
16604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016605 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16606 "association no longer in progress %d - mysterious HAL response",
16607 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016608
Jeff Johnsone7245742012-09-05 17:12:55 -070016609 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016612 }
16613
16614 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16615
16616 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016618 -----------------------------------------------------------------------*/
16619 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16620 {
16621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16622 "Join only allowed in Joining state - failure state is %d "
16623 "strange HAL response", pBSSSes->wdiAssocState);
16624
Jeff Johnsone7245742012-09-05 17:12:55 -070016625 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16626
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 }
16630
16631
16632 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016633 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 -----------------------------------------------------------------------*/
16635 if ( WDI_STATUS_SUCCESS != wdiStatus )
16636 {
16637 /*Association was failed by HAL - remove session*/
16638 WDI_DeleteSession(pWDICtx, pBSSSes);
16639
16640 /*Association no longer in progress */
16641 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16642
16643 /*Association no longer in progress - prepare pending assoc for processing*/
16644 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016645
Jeff Johnson295189b2012-06-20 16:38:30 -070016646 }
16647 else
16648 {
16649 /*Transition to state Joining - this may be redundant as we are supposed
16650 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016651 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 }
16653
16654 wpalMutexRelease(&pWDICtx->wptMutex);
16655
16656 /*Notify UMAC*/
16657 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16658
Jeff Johnsone7245742012-09-05 17:12:55 -070016659 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016660}/*WDI_ProcessJoinRsp*/
16661
16662
16663/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016666
16667 @param pWDICtx: pointer to the WLAN DAL context
16668 pEventData: pointer to the event information structure
16669
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 @see
16671 @return Result of the function call
16672*/
16673WDI_Status
16674WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016675(
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 WDI_ControlBlockType* pWDICtx,
16677 WDI_EventInfoType* pEventData
16678)
16679{
16680 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16681 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 WDI_BSSSessionType* pBSSSes = NULL;
16684
Jeff Johnsone7245742012-09-05 17:12:55 -070016685 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016686 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16687 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016688
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16690
16691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 -------------------------------------------------------------------------*/
16694 if (( NULL == pEventData ) ||
16695 ( NULL == pEventData->pEventData))
16696 {
16697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 }
16702
16703 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16704
16705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16709 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016710 sizeof(halConfigBssRspMsg.configBssRspParams));
16711
16712 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16713 halConfigBssRspMsg.configBssRspParams.status);
16714 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16715 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016716 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016717 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16718 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016719
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016721
16722 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016724
16725 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016726 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016727
Jeff Johnson295189b2012-06-20 16:38:30 -070016728 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016729
Jeff Johnson295189b2012-06-20 16:38:30 -070016730 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16733 #endif
16734 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16735 halConfigBssRspMsg.configBssRspParams.staMac,
16736 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016737
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 wpalMutexAcquire(&pWDICtx->wptMutex);
16739 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016740 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016741 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016742 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16743 wdiConfigBSSParams.macBSSID,
16744 &pBSSSes);
16745
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 /*-----------------------------------------------------------------------
16747 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016748 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 -----------------------------------------------------------------------*/
16750 if ( NULL == pBSSSes )
16751 {
16752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16753 "Association sequence for this BSS does not yet exist "
16754 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016755
16756 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16757
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016759 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016761
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 /*Save data for this BSS*/
16763 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16764 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016765 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016767 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016771 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016772 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16775 pBSSSes->bcastStaIdx =
16776 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016777
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016779
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 /*-------------------------------------------------------------------------
16781 Add Peer STA
16782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16785 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016786
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016788 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 wdiAddSTAParam.ucHTCapable =
16791 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16792 wdiAddSTAParam.ucStaType =
16793 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16794
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016796 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16797 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016799
16800 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16801 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16802 WDI_MAC_ADDR_LEN);
16803
Jeff Johnson295189b2012-06-20 16:38:30 -070016804 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016807 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016811 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016812 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016813 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016815 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016817
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16819 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016820
Jeff Johnson295189b2012-06-20 16:38:30 -070016821 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16822 /*-------------------------------------------------------------------------
16823 Add Broadcast STA only in AP mode
16824 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016825 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016826 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 {
16828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16829 "Add BCAST STA to table for index: %d",
16830 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016831
16832 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016834
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16836 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16837 }
16838 wpalMutexRelease(&pWDICtx->wptMutex);
16839 }
16840 else
16841 {
16842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16843 "Config BSS RSP failed with status : %s(%d)",
16844 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016845 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 halConfigBssRspMsg.configBssRspParams.status);
16847
Jeff Johnsone7245742012-09-05 17:12:55 -070016848
Jeff Johnson295189b2012-06-20 16:38:30 -070016849 /*Association was failed by HAL - remove session*/
16850 WDI_DeleteSession(pWDICtx, pBSSSes);
16851
16852 /*Association no longer in progress */
16853 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16854
16855 /*Association no longer in progress - prepare pending assoc for processing*/
16856 WDI_DequeueAssocRequest(pWDICtx);
16857
16858 }
16859
16860 /*Notify UMAC*/
16861 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16862
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016864}/*WDI_ProcessConfigBSSRsp*/
16865
16866
16867/**
16868 @brief Process Del BSS Response function (called when a response
16869 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016870
16871 @param pWDICtx: pointer to the WLAN DAL context
16872 pEventData: pointer to the event information structure
16873
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 @see
16875 @return Result of the function call
16876*/
16877WDI_Status
16878WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016879(
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_ControlBlockType* pWDICtx,
16881 WDI_EventInfoType* pEventData
16882)
16883{
16884 WDI_DelBSSRspParamsType wdiDelBSSParams;
16885 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 WDI_BSSSessionType* pBSSSes = NULL;
16888
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16891
16892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 -------------------------------------------------------------------------*/
16895 if (( NULL == pEventData ) ||
16896 ( NULL == pEventData->pEventData))
16897 {
16898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 }
16903
16904 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16905
16906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016908 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016909 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16910 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 sizeof(halDelBssRspMsg.deleteBssRspParams));
16912
16913
16914 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016916
16917 wpalMutexAcquire(&pWDICtx->wptMutex);
16918
16919 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016920 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016921 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16923 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16924 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016925
16926 /*-----------------------------------------------------------------------
16927 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 -----------------------------------------------------------------------*/
16930 if ( NULL == pBSSSes )
16931 {
16932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16933 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016934 "association no longer in progress - mysterious HAL response");
16935
16936 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16937
16938 wpalMutexRelease(&pWDICtx->wptMutex);
16939 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016941
16942 /*Extract BSSID for the response to UMAC*/
16943 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16944 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16945
16946 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16947
16948 /*-----------------------------------------------------------------------
16949 The current session will be deleted
16950 -----------------------------------------------------------------------*/
16951 WDI_DeleteSession(pWDICtx, pBSSSes);
16952
16953
16954 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016955 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16956 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016958 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016959 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016960
16961 /* Delete the STA's in this BSS */
16962 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16963
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 wpalMutexRelease(&pWDICtx->wptMutex);
16965
16966 /*Notify UMAC*/
16967 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16968
Jeff Johnsone7245742012-09-05 17:12:55 -070016969 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016970}/*WDI_ProcessDelBSSRsp*/
16971
16972/**
16973 @brief Process Post Assoc Rsp function (called when a response
16974 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016975
16976 @param pWDICtx: pointer to the WLAN DAL context
16977 pEventData: pointer to the event information structure
16978
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 @see
16980 @return Result of the function call
16981*/
16982WDI_Status
16983WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016984(
Jeff Johnson295189b2012-06-20 16:38:30 -070016985 WDI_ControlBlockType* pWDICtx,
16986 WDI_EventInfoType* pEventData
16987)
16988{
16989 WDI_PostAssocRspParamsType wdiPostAssocParams;
16990 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016991 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016992 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016993 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16995
16996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 -------------------------------------------------------------------------*/
16999 if (( NULL == pEventData ) ||
17000 ( NULL == pEventData->pEventData))
17001 {
17002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 }
17007
17008 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17009
17010 /*-------------------------------------------------------------------------
17011 Extract response and send it to UMAC
17012 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17014 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 sizeof(halPostAssocRspMsg.postAssocRspParams));
17016
17017 /*Extract the Post Assoc STA Params */
17018
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017021 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017022 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17025
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 wdiPostAssocParams.wdiStatus =
17027 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017028
17029 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17030 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017031 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17032 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 WDI_MAC_ADDR_LEN);
17034
17035 /* Extract Post Assoc BSS Params */
17036
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17038 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17039 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017040
17041 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17042 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017043 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017044 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17045 .macSTA, WDI_MAC_ADDR_LEN);
17046
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17049
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17052
17053 wdiPostAssocParams.bssParams.ucBSSIdx =
17054 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17055
Jeff Johnsone7245742012-09-05 17:12:55 -070017056 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017057 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17058
17059 wpalMutexAcquire(&pWDICtx->wptMutex);
17060
17061 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017064 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017065 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017066 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017067
17068 /*-----------------------------------------------------------------------
17069 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 -----------------------------------------------------------------------*/
17072 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17075 {
17076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17077 "Association sequence for this BSS does not yet exist or "
17078 "association no longer in progress - mysterious HAL response");
17079
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17081
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 }
17085
17086 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017087 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 -----------------------------------------------------------------------*/
17089 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17090 {
17091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17092 "Post Assoc not allowed before JOIN - failing request "
17093 "strange HAL response");
17094
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17096
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 }
17100
17101 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017102 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 -----------------------------------------------------------------------*/
17104 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17105 {
17106 /*Association was failed by HAL - remove session*/
17107 WDI_DeleteSession(pWDICtx, pBSSSes);
17108 }
17109 else
17110 {
17111 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017112 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017113
17114 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017115 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017117 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017118 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017119 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017121 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17123
Jeff Johnsone7245742012-09-05 17:12:55 -070017124 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017125 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17126 }
17127
17128 /*Association no longer in progress */
17129 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17130
17131 /*Association no longer in progress - prepare pending assoc for processing*/
17132 WDI_DequeueAssocRequest(pWDICtx);
17133
17134 wpalMutexRelease(&pWDICtx->wptMutex);
17135
17136 /*Notify UMAC*/
17137 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17138
Jeff Johnsone7245742012-09-05 17:12:55 -070017139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017140}/*WDI_ProcessPostAssocRsp*/
17141
17142/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017143 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017145
17146 @param pWDICtx: pointer to the WLAN DAL context
17147 pEventData: pointer to the event information structure
17148
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 @see
17150 @return Result of the function call
17151*/
17152WDI_Status
17153WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017154(
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 WDI_ControlBlockType* pWDICtx,
17156 WDI_EventInfoType* pEventData
17157)
17158{
17159 WDI_DelSTARspParamsType wdiDelSTARsp;
17160 WDI_DelSTARspCb wdiDelSTARspCb;
17161 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17164
17165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 -------------------------------------------------------------------------*/
17168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17169 ( NULL == pEventData->pEventData))
17170 {
17171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 }
17176
17177 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17178
17179 /*-------------------------------------------------------------------------
17180 Extract response and send it to UMAC
17181 -------------------------------------------------------------------------*/
17182 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 sizeof(halDelStaRspMsg.delStaRspParams));
17185
17186 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017187 wdiDelSTARsp.wdiStatus =
17188 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017189
17190 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17191
17192 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17193 if(staType == WDI_STA_ENTRY_SELF)
17194 {
17195 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17196
17197 /* At this point add the self-STA */
17198
17199 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17200 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17201 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17202
17203#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17204#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17205
17206 //all DPU indices are the same for self STA
17207 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17208 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17209 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17210 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17211 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17212 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017213
17214 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 }
17216 else
17217 {
17218 //Delete the station in the table
17219 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17220 }
17221
17222 /*Notify UMAC*/
17223 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17224
Jeff Johnsone7245742012-09-05 17:12:55 -070017225 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017226}/*WDI_ProcessDelSTARsp*/
17227
17228
17229/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017230 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017231==========================================================================*/
17232
17233/**
17234 @brief Process Set BSS Key Rsp function (called when a response
17235 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017236
17237 @param pWDICtx: pointer to the WLAN DAL context
17238 pEventData: pointer to the event information structure
17239
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 @see
17241 @return Result of the function call
17242*/
17243WDI_Status
17244WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017245(
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 WDI_ControlBlockType* pWDICtx,
17247 WDI_EventInfoType* pEventData
17248)
17249{
17250 WDI_Status wdiStatus;
17251 eHalStatus halStatus;
17252 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17254
17255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 -------------------------------------------------------------------------*/
17258 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17259 ( NULL == pEventData->pEventData))
17260 {
17261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017265 }
17266
17267 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17268
17269 /*-------------------------------------------------------------------------
17270 Extract response and send it to UMAC
17271 -------------------------------------------------------------------------*/
17272 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017274
17275 if ( eHAL_STATUS_SUCCESS != halStatus )
17276 {
17277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17278 "Set BSS Key failed with status %s (%d)",
17279 WDI_getHALStatusMsgString(halStatus),
17280 halStatus);
17281 /* send the status to UMAC, don't return from here*/
17282 }
17283
17284 /*Notify UMAC*/
17285 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17286
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017288}/*WDI_ProcessSetBssKeyRsp*/
17289
17290/**
17291 @brief Process Remove BSS Key Rsp function (called when a response
17292 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017293
17294 @param pWDICtx: pointer to the WLAN DAL context
17295 pEventData: pointer to the event information structure
17296
Jeff Johnson295189b2012-06-20 16:38:30 -070017297 @see
17298 @return Result of the function call
17299*/
17300WDI_Status
17301WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017302(
Jeff Johnson295189b2012-06-20 16:38:30 -070017303 WDI_ControlBlockType* pWDICtx,
17304 WDI_EventInfoType* pEventData
17305)
17306{
17307 WDI_Status wdiStatus;
17308 eHalStatus halStatus;
17309 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17311
17312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017314 -------------------------------------------------------------------------*/
17315 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17316 ( NULL == pEventData->pEventData))
17317 {
17318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 }
17323
17324 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17325
17326 /*-------------------------------------------------------------------------
17327 Extract response and send it to UMAC
17328 -------------------------------------------------------------------------*/
17329 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017330 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017331
17332 if ( eHAL_STATUS_SUCCESS != halStatus )
17333 {
17334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17335 "Remove BSS Key failed with status %s (%d )",
17336 WDI_getHALStatusMsgString(halStatus),
17337 halStatus);
17338 /* send the status to UMAC, don't return from here*/
17339 }
17340
17341 /*Notify UMAC*/
17342 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17343
Jeff Johnsone7245742012-09-05 17:12:55 -070017344 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017345}/*WDI_ProcessSetBssKeyRsp*/
17346
17347
17348/**
17349 @brief Process Set STA Key Rsp function (called when a response
17350 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017351
17352 @param pWDICtx: pointer to the WLAN DAL context
17353 pEventData: pointer to the event information structure
17354
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 @see
17356 @return Result of the function call
17357*/
17358WDI_Status
17359WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017360(
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 WDI_ControlBlockType* pWDICtx,
17362 WDI_EventInfoType* pEventData
17363)
17364{
17365 WDI_Status wdiStatus;
17366 eHalStatus halStatus;
17367 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17369
17370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 -------------------------------------------------------------------------*/
17373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17374 ( NULL == pEventData->pEventData))
17375 {
17376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 }
17381
17382 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17383
17384 /*-------------------------------------------------------------------------
17385 Extract response and send it to UMAC
17386 -------------------------------------------------------------------------*/
17387 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017389
17390 if ( eHAL_STATUS_SUCCESS != halStatus )
17391 {
17392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17393 "Set STA Key failed with status %s (%d)",
17394 WDI_getHALStatusMsgString(halStatus),
17395 halStatus);
17396 /* send the status to UMAC, don't return from here*/
17397 }
17398
17399 /*Notify UMAC*/
17400 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17401
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017403}/*WDI_ProcessSetSTAKeyRsp*/
17404
17405/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017406 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017408
17409 @param pWDICtx: pointer to the WLAN DAL context
17410 pEventData: pointer to the event information structure
17411
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 @see
17413 @return Result of the function call
17414*/
17415WDI_Status
17416WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017417(
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 WDI_ControlBlockType* pWDICtx,
17419 WDI_EventInfoType* pEventData
17420)
17421{
17422 WDI_Status wdiStatus;
17423 eHalStatus halStatus;
17424 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17426
17427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 -------------------------------------------------------------------------*/
17430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17431 ( NULL == pEventData->pEventData))
17432 {
17433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 }
17438
17439 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17440
17441 /*-------------------------------------------------------------------------
17442 Extract response and send it to UMAC
17443 -------------------------------------------------------------------------*/
17444 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017446
17447 if ( eHAL_STATUS_SUCCESS != halStatus )
17448 {
17449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17450 "Remove STA Key failed with status %s (%d)",
17451 WDI_getHALStatusMsgString(halStatus),
17452 halStatus);
17453 /* send the status to UMAC, don't return from here*/
17454 }
17455
17456 /*Notify UMAC*/
17457 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17458
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017460}/*WDI_ProcessRemoveStaKeyRsp*/
17461
17462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017464 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017465
17466 @param pWDICtx: pointer to the WLAN DAL context
17467 pEventData: pointer to the event information structure
17468
Jeff Johnson295189b2012-06-20 16:38:30 -070017469 @see
17470 @return Result of the function call
17471*/
17472WDI_Status
17473WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017474(
Jeff Johnson295189b2012-06-20 16:38:30 -070017475 WDI_ControlBlockType* pWDICtx,
17476 WDI_EventInfoType* pEventData
17477)
17478{
17479 WDI_Status wdiStatus;
17480 eHalStatus halStatus;
17481 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17483
17484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017486 -------------------------------------------------------------------------*/
17487 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17488 ( NULL == pEventData->pEventData))
17489 {
17490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 }
17495
17496 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17497
17498 /*-------------------------------------------------------------------------
17499 Extract response and send it to UMAC
17500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017501 wpalMemoryCopy( &halStatus,
17502 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 sizeof(halStatus));
17504
Jeff Johnsone7245742012-09-05 17:12:55 -070017505 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017506
17507 if ( eHAL_STATUS_SUCCESS != halStatus )
17508 {
17509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17510 "Set STA Key failed with status %s (%d)",
17511 WDI_getHALStatusMsgString(halStatus),
17512 halStatus);
17513 /* send the status to UMAC, don't return from here*/
17514 }
17515
17516 /*Notify UMAC*/
17517 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17518
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017520}/*WDI_ProcessSetSTABcastKeyRsp*/
17521
17522/**
17523 @brief Process Remove STA Bcast Key Rsp function (called when a
17524 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017525
17526 @param pWDICtx: pointer to the WLAN DAL context
17527 pEventData: pointer to the event information structure
17528
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 @see
17530 @return Result of the function call
17531*/
17532WDI_Status
17533WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017534(
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 WDI_ControlBlockType* pWDICtx,
17536 WDI_EventInfoType* pEventData
17537)
17538{
17539 WDI_Status wdiStatus;
17540 eHalStatus halStatus;
17541 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17543
17544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 -------------------------------------------------------------------------*/
17547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17548 ( NULL == pEventData->pEventData))
17549 {
17550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017554 }
17555
17556 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17557
17558 /*-------------------------------------------------------------------------
17559 Extract response and send it to UMAC
17560 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 wpalMemoryCopy( &halStatus,
17562 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 sizeof(halStatus));
17564
Jeff Johnsone7245742012-09-05 17:12:55 -070017565 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017566
17567 if ( eHAL_STATUS_SUCCESS != halStatus )
17568 {
17569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17570 "Remove STA Key failed with status %s (%d)",
17571 WDI_getHALStatusMsgString(halStatus),
17572 halStatus);
17573 /* send the status to UMAC, don't return from here*/
17574 }
17575
17576 /*Notify UMAC*/
17577 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17578
Jeff Johnsone7245742012-09-05 17:12:55 -070017579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017580}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17581
17582
17583/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017585==========================================================================*/
17586
17587/**
17588 @brief Process Add TSpec Rsp function (called when a response
17589 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017590
17591 @param pWDICtx: pointer to the WLAN DAL context
17592 pEventData: pointer to the event information structure
17593
Jeff Johnson295189b2012-06-20 16:38:30 -070017594 @see
17595 @return Result of the function call
17596*/
17597WDI_Status
17598WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017599(
Jeff Johnson295189b2012-06-20 16:38:30 -070017600 WDI_ControlBlockType* pWDICtx,
17601 WDI_EventInfoType* pEventData
17602)
17603{
17604 WDI_Status wdiStatus;
17605 eHalStatus halStatus;
17606 WDI_AddTsRspCb wdiAddTsRspCb;
17607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17608
17609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 -------------------------------------------------------------------------*/
17612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17613 ( NULL == pEventData->pEventData))
17614 {
17615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 }
17620
17621 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17622
17623 /*-------------------------------------------------------------------------
17624 Extract response and send it to UMAC
17625 -------------------------------------------------------------------------*/
17626 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017627 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017628
17629 /*Notify UMAC*/
17630 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17631
Jeff Johnsone7245742012-09-05 17:12:55 -070017632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017633}/*WDI_ProcessAddTSpecRsp*/
17634
17635
Sunil Duttbd736ed2014-05-26 21:19:41 +053017636
17637#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17638
17639WDI_Status
17640WDI_ProcessLLStatsSetRsp
17641(
17642 WDI_ControlBlockType* pWDICtx,
17643 WDI_EventInfoType* pEventData
17644)
17645{
17646 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17647
17648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17649 "%s: Enter ", __func__);
17650 /*-------------------------------------------------------------------------
17651 Sanity check
17652 -------------------------------------------------------------------------*/
17653 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17654 ( NULL == pEventData->pEventData))
17655 {
17656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17657 "%s: Invalid parameters", __func__);
17658 WDI_ASSERT(0);
17659 return WDI_STATUS_E_FAILURE;
17660 }
17661
17662 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17663
17664 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17665
17666 return WDI_STATUS_SUCCESS;
17667}
17668
17669WDI_Status
17670WDI_ProcessLLStatsGetRsp
17671(
17672 WDI_ControlBlockType* pWDICtx,
17673 WDI_EventInfoType* pEventData
17674)
17675{
17676 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17677
17678 /*-------------------------------------------------------------------------
17679 Sanity check
17680 -------------------------------------------------------------------------*/
17681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17682 ( NULL == pEventData->pEventData))
17683 {
17684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17685 "%s: Invalid parameters", __func__);
17686 WDI_ASSERT(0);
17687 return WDI_STATUS_E_FAILURE;
17688 }
17689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17690 "%s: Enter ", __func__);
17691
17692 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17693
17694 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17695
17696 return WDI_STATUS_SUCCESS;
17697}
17698
17699WDI_Status
17700WDI_ProcessLLStatsClearRsp
17701(
17702 WDI_ControlBlockType* pWDICtx,
17703 WDI_EventInfoType* pEventData
17704)
17705{
17706 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17707
17708 /*-------------------------------------------------------------------------
17709 Sanity check
17710 -------------------------------------------------------------------------*/
17711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17712 ( NULL == pEventData->pEventData))
17713 {
17714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17715 "%s: Invalid parameters", __func__);
17716 WDI_ASSERT(0);
17717 return WDI_STATUS_E_FAILURE;
17718 }
17719
17720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17721 "%s: CLEAR RESPONSE CALL BACK", __func__);
17722 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17723
17724 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17725
17726 return WDI_STATUS_SUCCESS;
17727}
17728#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17729
Jeff Johnson295189b2012-06-20 16:38:30 -070017730/**
17731 @brief Process Del TSpec Rsp function (called when a response
17732 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017733
17734 @param pWDICtx: pointer to the WLAN DAL context
17735 pEventData: pointer to the event information structure
17736
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 @see
17738 @return Result of the function call
17739*/
17740WDI_Status
17741WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017742(
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 WDI_ControlBlockType* pWDICtx,
17744 WDI_EventInfoType* pEventData
17745)
17746{
17747 WDI_Status wdiStatus;
17748 eHalStatus halStatus;
17749 WDI_DelTsRspCb wdiDelTsRspCb;
17750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17751
17752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017754 -------------------------------------------------------------------------*/
17755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17756 ( NULL == pEventData->pEventData))
17757 {
17758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017762 }
17763
17764 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17765
17766 /*-------------------------------------------------------------------------
17767 Extract response and send it to UMAC
17768 -------------------------------------------------------------------------*/
17769 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017770 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017771
17772 /*Notify UMAC*/
17773 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17774
Jeff Johnsone7245742012-09-05 17:12:55 -070017775 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017776}/*WDI_ProcessDelTSpecRsp*/
17777
17778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017779 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017780 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017781
17782 @param pWDICtx: pointer to the WLAN DAL context
17783 pEventData: pointer to the event information structure
17784
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 @see
17786 @return Result of the function call
17787*/
17788WDI_Status
17789WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017790(
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 WDI_ControlBlockType* pWDICtx,
17792 WDI_EventInfoType* pEventData
17793)
17794{
17795 WDI_Status wdiStatus;
17796 eHalStatus halStatus;
17797 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17799
17800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017802 -------------------------------------------------------------------------*/
17803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17804 ( NULL == pEventData->pEventData))
17805 {
17806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017810 }
17811
17812 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17813
17814 /*-------------------------------------------------------------------------
17815 Extract response and send it to UMAC
17816 -------------------------------------------------------------------------*/
17817 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017818 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017819
17820 /*Notify UMAC*/
17821 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17822
Jeff Johnsone7245742012-09-05 17:12:55 -070017823 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017824}/*WDI_ProcessUpdateEDCAParamsRsp*/
17825
17826
17827/**
17828 @brief Process Add BA Rsp function (called when a response
17829 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017830
17831 @param pWDICtx: pointer to the WLAN DAL context
17832 pEventData: pointer to the event information structure
17833
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 @see
17835 @return Result of the function call
17836*/
17837WDI_Status
17838WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017839(
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 WDI_ControlBlockType* pWDICtx,
17841 WDI_EventInfoType* pEventData
17842)
17843{
17844 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17845
17846 tAddBASessionRspParams halBASessionRsp;
17847 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17848
Jeff Johnsone7245742012-09-05 17:12:55 -070017849
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17851
17852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 -------------------------------------------------------------------------*/
17855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17856 ( NULL == pEventData->pEventData))
17857 {
17858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017859 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017862 }
17863
17864 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17865
17866 /*-------------------------------------------------------------------------
17867 Extract response and send it to UMAC
17868 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017869 wpalMemoryCopy( &halBASessionRsp,
17870 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 sizeof(halBASessionRsp));
17872
17873 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17874
Jeff Johnson43971f52012-07-17 12:26:56 -070017875 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017876 {
17877 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17878 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17879 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17880 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17881 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17882 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17883 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17884 }
17885
17886 /*Notify UMAC*/
17887 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17888
Jeff Johnsone7245742012-09-05 17:12:55 -070017889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017890}/*WDI_ProcessAddSessionBARsp*/
17891
17892
17893/**
17894 @brief Process Del BA Rsp function (called when a response
17895 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017896
17897 @param pWDICtx: pointer to the WLAN DAL context
17898 pEventData: pointer to the event information structure
17899
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 @see
17901 @return Result of the function call
17902*/
17903WDI_Status
17904WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017905(
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 WDI_ControlBlockType* pWDICtx,
17907 WDI_EventInfoType* pEventData
17908)
17909{
17910 WDI_Status wdiStatus;
17911 eHalStatus halStatus;
17912 WDI_DelBARspCb wdiDelBARspCb;
17913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17914
17915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 -------------------------------------------------------------------------*/
17918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17919 ( NULL == pEventData->pEventData))
17920 {
17921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017925 }
17926
17927 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17928
17929 /*-------------------------------------------------------------------------
17930 Extract response and send it to UMAC
17931 -------------------------------------------------------------------------*/
17932 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017933 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017934
17935 if ( eHAL_STATUS_SUCCESS == halStatus )
17936 {
17937 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17938 }
17939
17940 /*Notify UMAC*/
17941 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17942
Jeff Johnsone7245742012-09-05 17:12:55 -070017943 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017944}/*WDI_ProcessDelBARsp*/
17945
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017946#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017947/**
17948 @brief Process TSM Stats Rsp function (called when a response
17949 is being received over the bus from HAL)
17950
17951 @param pWDICtx: pointer to the WLAN DAL context
17952 pEventData: pointer to the event information structure
17953
17954 @see
17955 @return Result of the function call
17956*/
17957WDI_Status
17958WDI_ProcessTsmStatsRsp
17959(
17960 WDI_ControlBlockType* pWDICtx,
17961 WDI_EventInfoType* pEventData
17962)
17963{
17964 WDI_TsmRspCb wdiTsmStatsRspCb;
17965 tTsmStatsRspMsg halTsmStatsRspMsg;
17966 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17968
17969 /*-------------------------------------------------------------------------
17970 Sanity check
17971 -------------------------------------------------------------------------*/
17972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17973 ( NULL == pEventData->pEventData))
17974 {
17975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017977 WDI_ASSERT(0);
17978 return WDI_STATUS_E_FAILURE;
17979 }
17980
17981 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17982
17983 /*-------------------------------------------------------------------------
17984 Unpack HAL Response Message - the header was already extracted by the
17985 main Response Handling procedure
17986 -------------------------------------------------------------------------*/
17987 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17988 pEventData->pEventData,
17989 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17990
17991 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17992 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17993 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17994 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17995 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17996 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17997 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17998 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17999 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18000 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18001 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18002 halTsmStatsRspMsg.tsmStatsRspParams.status);
18003
18004 /*Notify UMAC*/
18005 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18006
18007 return WDI_STATUS_SUCCESS;
18008}/*WDI_ProcessTsmStatsRsp*/
18009
18010#endif
18011
18012
18013
18014/**
18015 @brief Process Flush AC Rsp function (called when a response
18016 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018017
18018 @param pWDICtx: pointer to the WLAN DAL context
18019 pEventData: pointer to the event information structure
18020
Jeff Johnson295189b2012-06-20 16:38:30 -070018021 @see
18022 @return Result of the function call
18023*/
18024WDI_Status
18025WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018026(
Jeff Johnson295189b2012-06-20 16:38:30 -070018027 WDI_ControlBlockType* pWDICtx,
18028 WDI_EventInfoType* pEventData
18029)
18030{
18031 WDI_Status wdiStatus;
18032 eHalStatus halStatus;
18033 WDI_FlushAcRspCb wdiFlushAcRspCb;
18034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18035
18036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 -------------------------------------------------------------------------*/
18039 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18040 ( NULL == pEventData->pEventData))
18041 {
18042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 }
18047
18048 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18049
18050 /*-------------------------------------------------------------------------
18051 Extract response and send it to UMAC
18052 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018053 wpalMemoryCopy( &halStatus,
18054 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 sizeof(halStatus));
18056
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018058
18059 /*Notify UMAC*/
18060 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18061
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018063}/*WDI_ProcessFlushAcRsp*/
18064
18065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018066 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018067 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018068
18069 @param pWDICtx: pointer to the WLAN DAL context
18070 pEventData: pointer to the event information structure
18071
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 @see
18073 @return Result of the function call
18074*/
18075WDI_Status
18076WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018077(
Jeff Johnson295189b2012-06-20 16:38:30 -070018078 WDI_ControlBlockType* pWDICtx,
18079 WDI_EventInfoType* pEventData
18080)
18081{
18082 WDI_Status wdiStatus;
18083 eHalStatus halStatus;
18084 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18086
18087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 -------------------------------------------------------------------------*/
18090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18091 ( NULL == pEventData->pEventData))
18092 {
18093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018097 }
18098
18099 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18100
18101 /*-------------------------------------------------------------------------
18102 Extract response and send it to UMAC
18103 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 wpalMemoryCopy( &halStatus,
18105 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 sizeof(halStatus));
18107
Jeff Johnsone7245742012-09-05 17:12:55 -070018108 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018109
18110 /*Notify UMAC*/
18111 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18112
Jeff Johnsone7245742012-09-05 17:12:55 -070018113 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018114}/*WDI_ProcessBtAmpEventRsp*/
18115
18116
18117/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018118 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018119 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018120
18121 @param pWDICtx: pointer to the WLAN DAL context
18122 pEventData: pointer to the event information structure
18123
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 @see
18125 @return Result of the function call
18126*/
18127WDI_Status
18128WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018129(
Jeff Johnson295189b2012-06-20 16:38:30 -070018130 WDI_ControlBlockType* pWDICtx,
18131 WDI_EventInfoType* pEventData
18132)
18133{
18134 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18135 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18136 tAddStaSelfRspMsg halAddStaSelfRsp;
18137 WDI_AddStaParams wdiAddSTAParam = {0};
18138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18139
18140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018141 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 -------------------------------------------------------------------------*/
18143 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18144 ( NULL == pEventData->pEventData))
18145 {
18146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018147 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 }
18151
Jeff Johnsone7245742012-09-05 17:12:55 -070018152 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18154
18155 /*-------------------------------------------------------------------------
18156 Extract response and send it to UMAC
18157 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018158 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18159 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018160 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18161
18162
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 wdiAddSTASelfParams.wdiStatus =
18164 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018165
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018168 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018169 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018170 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18172
18173 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18174 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18175 WDI_MAC_ADDR_LEN);
18176
18177
18178#ifdef HAL_SELF_STA_PER_BSS
18179
18180 /* At this point add the self-STA */
18181
18182 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18183 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18184 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18185
18186 //all DPU indices are the same for self STA
18187
18188 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18191 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18192 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18193 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18194 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18195
18196 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18197 WDI_MAC_ADDR_LEN);
18198
18199 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18200 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18201
Jeff Johnsone7245742012-09-05 17:12:55 -070018202 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018203 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18204 {
18205 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18206 }
18207#endif
18208
18209 /*Notify UMAC*/
18210 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18211
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018213}/*WDI_ProcessAddSTASelfRsp*/
18214
18215
18216
18217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018220
18221 @param pWDICtx: pointer to the WLAN DAL context
18222 pEventData: pointer to the event information structure
18223
Jeff Johnson295189b2012-06-20 16:38:30 -070018224 @see
18225 @return Result of the function call
18226*/
18227WDI_Status
18228WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018229(
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 WDI_ControlBlockType* pWDICtx,
18231 WDI_EventInfoType* pEventData
18232)
18233{
18234 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18235 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18236 tDelStaSelfRspParams delStaSelfRspParams;
18237 wpt_uint8 ucStaIdx;
18238
18239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18240
18241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018243 -------------------------------------------------------------------------*/
18244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18245 ( NULL == pEventData->pEventData))
18246 {
18247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 }
18252
18253 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18254
18255 /*-------------------------------------------------------------------------
18256 Extract response and send it to UMAC
18257 -------------------------------------------------------------------------*/
18258
Jeff Johnsone7245742012-09-05 17:12:55 -070018259 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 (wpt_uint8*)pEventData->pEventData,
18261 sizeof(tDelStaSelfRspParams));
18262
Jeff Johnsone7245742012-09-05 17:12:55 -070018263 wdiDelStaSelfRspParams.wdiStatus =
18264 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018265
Jeff Johnsone7245742012-09-05 17:12:55 -070018266 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018267 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18268 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18269 {
18270 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018271 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018272 delStaSelfRspParams.selfMacAddr,
18273 &ucStaIdx);
18274 if(WDI_STATUS_E_FAILURE == wdiStatus)
18275 {
18276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018277 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 }
18281 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18282 }
18283
18284 /*Notify UMAC*/
18285 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18286
18287 return WDI_STATUS_SUCCESS;
18288}
18289
Jeff Johnsone7245742012-09-05 17:12:55 -070018290#ifdef FEATURE_OEM_DATA_SUPPORT
18291/**
18292 @brief Start Oem Data Rsp function (called when a
18293 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018294
Jeff Johnsone7245742012-09-05 17:12:55 -070018295 @param pWDICtx: pointer to the WLAN DAL context
18296 pEventData: pointer to the event information structure
18297
18298 @see
18299 @return Result of the function call
18300*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018301
18302WDI_Status
18303WDI_ProcessStartOemDataRsp
18304(
18305 WDI_ControlBlockType* pWDICtx,
18306 WDI_EventInfoType* pEventData
18307)
18308{
18309 WDI_oemDataRspCb wdiOemDataRspCb;
18310 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18311 tStartOemDataRspParams* halStartOemDataRspParams;
18312
18313 /*-------------------------------------------------------------------------
18314 Sanity check
18315 -------------------------------------------------------------------------*/
18316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18317 ( NULL == pEventData->pEventData))
18318 {
18319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018320 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 WDI_ASSERT(0);
18322 return WDI_STATUS_E_FAILURE;
18323 }
18324
18325 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18326
18327 /*-------------------------------------------------------------------------
18328 Extract response and send it to UMAC
18329 -------------------------------------------------------------------------*/
18330 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18331
18332
18333 //It is the responsibility of the application code to check for failure
18334 //conditions!
18335
18336 //Allocate memory for WDI OEM DATA RSP structure
18337 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18338
18339 if(NULL == wdiOemDataRspParams)
18340 {
18341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018342 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018343 pWDICtx, pEventData, pEventData->pEventData);
18344 WDI_ASSERT(0);
18345 return WDI_STATUS_E_FAILURE;
18346 }
18347
18348 /* Populate WDI structure members */
18349 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18350
18351 /*Notify UMAC*/
18352 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18353
18354 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18355 wpalMemoryFree(wdiOemDataRspParams);
18356
18357 return WDI_STATUS_SUCCESS;
18358}/*WDI_PrcoessStartOemDataRsp*/
18359#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018360
18361/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018363===========================================================================*/
18364
18365/**
18366 @brief Process Channel Switch Rsp function (called when a response
18367 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018368
18369 @param pWDICtx: pointer to the WLAN DAL context
18370 pEventData: pointer to the event information structure
18371
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 @see
18373 @return Result of the function call
18374*/
18375WDI_Status
18376WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018377(
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 WDI_ControlBlockType* pWDICtx,
18379 WDI_EventInfoType* pEventData
18380)
18381{
18382 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18383 WDI_SwitchChRspCb wdiChSwitchRspCb;
18384 tSwitchChannelRspParams halSwitchChannelRsp;
18385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18386
18387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018389 -------------------------------------------------------------------------*/
18390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18391 ( NULL == pEventData->pEventData))
18392 {
18393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 }
18398
18399 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18400
18401 /*-------------------------------------------------------------------------
18402 Extract response and send it to UMAC
18403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018405 (wpt_uint8*)pEventData->pEventData,
18406 sizeof(halSwitchChannelRsp));
18407
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 wdiSwitchChRsp.wdiStatus =
18409 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018410 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18411
18412#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018414#endif
18415
18416 /*Notify UMAC*/
18417 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18418
Jeff Johnsone7245742012-09-05 17:12:55 -070018419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018420}/*WDI_ProcessChannelSwitchRsp*/
18421
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018422/**
18423 @brief Process Channel Switch Rsp function (called when a response
18424 is being received over the bus from HAL against
18425 WDI_ProcessChannelSwitchReq_V1)
18426
18427 @param pWDICtx: pointer to the WLAN DAL context
18428 pEventData: pointer to the event information structure
18429
18430 @see
18431 @return Result of the function call
18432*/
18433
18434WDI_Status
18435WDI_ProcessChannelSwitchRsp_V1
18436(
18437 WDI_ControlBlockType* pWDICtx,
18438 WDI_EventInfoType* pEventData
18439)
18440{
18441 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18442 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18443 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18445
18446 /*-------------------------------------------------------------------------
18447 Sanity check
18448 -------------------------------------------------------------------------*/
18449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18450 ( NULL == pEventData->pEventData))
18451 {
18452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18453 "%s: Invalid parameters", __func__);
18454 WDI_ASSERT(0);
18455 return WDI_STATUS_E_FAILURE;
18456 }
18457
18458 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18459
18460 /*-------------------------------------------------------------------------
18461 Extract response and send it to UMAC
18462 -------------------------------------------------------------------------*/
18463 wpalMemoryCopy( &halSwitchChannelRsp,
18464 (wpt_uint8*)pEventData->pEventData,
18465 sizeof(halSwitchChannelRsp));
18466
18467 wdiSwitchChRsp.wdiStatus =
18468 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18469 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18470
18471#ifdef WLAN_FEATURE_VOWIFI
18472 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18473#endif
18474
18475 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18476 if (( NULL == wdiChSwitchRspCb ) )
18477 {
18478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18479 "%s: ### Call back function is null", __func__);
18480 WDI_ASSERT(0);
18481 return WDI_STATUS_E_FAILURE;
18482 }
18483 /*Notify UMAC*/
18484 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18485
18486 return WDI_STATUS_SUCCESS;
18487}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018488
18489/**
18490 @brief Process Config STA Rsp function (called when a response
18491 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018492
18493 @param pWDICtx: pointer to the WLAN DAL context
18494 pEventData: pointer to the event information structure
18495
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 @see
18497 @return Result of the function call
18498*/
18499WDI_Status
18500WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018501(
Jeff Johnson295189b2012-06-20 16:38:30 -070018502 WDI_ControlBlockType* pWDICtx,
18503 WDI_EventInfoType* pEventData
18504)
18505{
18506 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18507 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18508 WDI_AddStaParams wdiAddSTAParam;
18509
18510 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018511 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018512
Jeff Johnsone7245742012-09-05 17:12:55 -070018513 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18515
18516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 -------------------------------------------------------------------------*/
18519 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18520 ( NULL == pEventData->pEventData))
18521 {
18522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 }
18527
18528 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18529
18530 /*-------------------------------------------------------------------------
18531 Extract response and send it to UMAC
18532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018533 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18534 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 sizeof(halConfigStaRsp.configStaRspParams));
18536
18537
18538 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18539 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18540 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18541 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18542 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18543
18544 /* MAC Address of STA - take from cache as it does not come back in the
18545 response*/
18546 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018547 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018548 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018549
18550 wdiCfgSTAParams.wdiStatus =
18551 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018552
18553 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18554 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18555 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18556
18557 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18558 {
18559 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18560 {
18561 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018562 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18564 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018565
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018567 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018568 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018569 wdiAddSTAParam.ucHTCapable =
18570 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18571 wdiAddSTAParam.ucStaType =
18572 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018573 wdiAddSTAParam.ucRmfEnabled =
18574 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018575
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18578 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018579 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018580
18581 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18582 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18583 WDI_MAC_ADDR_LEN);
18584
18585 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18586 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18587 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018588
18589 if ( NULL == pBSSSes )
18590 {
18591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18592 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018593
Jeff Johnson295189b2012-06-20 16:38:30 -070018594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 }
18597
18598 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018599 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018601 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018603 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018605 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018606 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018607 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018608
Jeff Johnson295189b2012-06-20 16:38:30 -070018609 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18610 }
18611 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18612 {
18613 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18614
Jeff Johnsone7245742012-09-05 17:12:55 -070018615 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018616 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018618 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018619 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018620 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018621 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018622 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018625 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018627 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018628 halConfigStaRsp.configStaRspParams.ucUcastSig;
18629 }
18630 }
18631
18632 /*Notify UMAC*/
18633 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18634
Jeff Johnsone7245742012-09-05 17:12:55 -070018635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018636}/*WDI_ProcessConfigStaRsp*/
18637
18638
18639/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018640 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018641 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018642
18643 @param pWDICtx: pointer to the WLAN DAL context
18644 pEventData: pointer to the event information structure
18645
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 @see
18647 @return Result of the function call
18648*/
18649WDI_Status
18650WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018651(
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 WDI_ControlBlockType* pWDICtx,
18653 WDI_EventInfoType* pEventData
18654)
18655{
18656 WDI_Status wdiStatus;
18657 eHalStatus halStatus;
18658 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18659
18660 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018661 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18663
18664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018666 -------------------------------------------------------------------------*/
18667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18668 ( NULL == pEventData->pEventData))
18669 {
18670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018674 }
18675
18676 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18677
18678 wpalMutexAcquire(&pWDICtx->wptMutex);
18679
18680 /*If the link is being transitioned to idle - the BSS is to be deleted
18681 - this type of ending a session is possible when UMAC has failed an
18682 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18685 {
18686 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018687 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018688 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018689 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18690 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18691 &pBSSSes);
18692
Jeff Johnson295189b2012-06-20 16:38:30 -070018693 /*-----------------------------------------------------------------------
18694 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 -----------------------------------------------------------------------*/
18697 if ( NULL == pBSSSes )
18698 {
18699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18700 "Set link response received outside association session");
18701 }
18702 else
18703 {
18704 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18705 will be del BSS coming after this to stop the beaconing & cleaning up the
18706 sessions*/
18707 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18708 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18709 {
18710 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018711 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 -----------------------------------------------------------------------*/
18713 WDI_DeleteSession(pWDICtx, pBSSSes);
18714
18715 /*-----------------------------------------------------------------------
18716 Check to see if this association is in progress - if so disable the
18717 flag as this has ended
18718 -----------------------------------------------------------------------*/
18719 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018720 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 /*Association no longer in progress */
18722 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18723 /*Association no longer in progress - prepare pending assoc for processing*/
18724 WDI_DequeueAssocRequest(pWDICtx);
18725 }
18726 }
18727 }
18728 }
18729 /* If the link state has been set to POST ASSOC, reset the "association in
18730 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018731 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18733 {
18734 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18735 WDI_DequeueAssocRequest(pWDICtx);
18736 }
18737
18738 wpalMutexRelease(&pWDICtx->wptMutex);
18739
18740 /*-------------------------------------------------------------------------
18741 Extract response and send it to UMAC
18742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018743 wpalMemoryCopy( &halStatus,
18744 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018745 sizeof(halStatus));
18746
Jeff Johnsone7245742012-09-05 17:12:55 -070018747 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018748
18749 /*Notify UMAC*/
18750 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18751
Jeff Johnsone7245742012-09-05 17:12:55 -070018752 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018753}/*WDI_ProcessSetLinkStateRsp*/
18754
18755/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018758
18759 @param pWDICtx: pointer to the WLAN DAL context
18760 pEventData: pointer to the event information structure
18761
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 @see
18763 @return Result of the function call
18764*/
18765WDI_Status
18766WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018767(
Jeff Johnson295189b2012-06-20 16:38:30 -070018768 WDI_ControlBlockType* pWDICtx,
18769 WDI_EventInfoType* pEventData
18770)
18771{
18772 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18773 WDI_GetStatsRspCb wdiGetStatsRspCb;
18774 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018775
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18777
18778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018779 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018780 -------------------------------------------------------------------------*/
18781 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18782 ( NULL == pEventData->pEventData))
18783 {
18784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018785 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018786 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018788 }
18789
18790 /*-------------------------------------------------------------------------
18791 Extract response and send it to UMAC
18792 -------------------------------------------------------------------------*/
18793 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18794
18795 /*allocate the stats response buffer */
18796 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18797 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18798 + sizeof(WDI_GetStatsRspParamsType));
18799
18800 if(NULL == wdiGetStatsRsp)
18801 {
18802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018803 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 pWDICtx, pEventData, pEventData->pEventData);
18805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 }
18808
18809 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18810
18811 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18812 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18813 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18814 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18815 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18816 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18817
18818 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18819 wpalMemoryCopy(wdiGetStatsRsp + 1,
18820 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18821 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18822
18823 /*Notify UMAC*/
18824 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18825
18826 wpalMemoryFree(wdiGetStatsRsp);
18827
Jeff Johnsone7245742012-09-05 17:12:55 -070018828 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018829}/*WDI_ProcessGetStatsRsp*/
18830
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018831#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018832/**
18833 @brief Process Get Roam Rssi Rsp function (called when a response is
18834 being received over the bus from HAL)
18835
18836 @param pWDICtx: pointer to the WLAN DAL context
18837 pEventData: pointer to the event information structure
18838
18839 @see
18840 @return Result of the function call
18841*/
18842WDI_Status
18843WDI_ProcessGetRoamRssiRsp
18844(
18845 WDI_ControlBlockType* pWDICtx,
18846 WDI_EventInfoType* pEventData
18847)
18848{
18849 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18850 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18851 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18853
18854 /*-------------------------------------------------------------------------
18855 Sanity check
18856 -------------------------------------------------------------------------*/
18857 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18858 ( NULL == pEventData->pEventData))
18859 {
18860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18861 "%s: Invalid parameters", __func__);
18862 WDI_ASSERT(0);
18863 return WDI_STATUS_E_FAILURE;
18864 }
18865
18866 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18867 if(NULL == wdiGetRoamRssiRspCb)
18868 {
18869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18870 "%s: call back function is NULL", __func__);
18871 WDI_ASSERT(0);
18872 return WDI_STATUS_E_FAILURE;
18873 }
18874
18875 /*-------------------------------------------------------------------------
18876 Extract response and send it to UMAC
18877 -------------------------------------------------------------------------*/
18878 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18879 pEventData->pEventData,
18880 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18881
18882 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18883 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18884 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18885
18886 /*Notify UMAC*/
18887 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18888
18889 return WDI_STATUS_SUCCESS;
18890}/*WDI_ProcessGetRoamRssiRsp*/
18891#endif
18892
Jeff Johnson295189b2012-06-20 16:38:30 -070018893
18894/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018895 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018896 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018897
18898 @param pWDICtx: pointer to the WLAN DAL context
18899 pEventData: pointer to the event information structure
18900
Jeff Johnson295189b2012-06-20 16:38:30 -070018901 @see
18902 @return Result of the function call
18903*/
18904WDI_Status
18905WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018906(
Jeff Johnson295189b2012-06-20 16:38:30 -070018907 WDI_ControlBlockType* pWDICtx,
18908 WDI_EventInfoType* pEventData
18909)
18910{
18911 WDI_Status wdiStatus;
18912 eHalStatus halStatus;
18913 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18915
18916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018918 -------------------------------------------------------------------------*/
18919 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18920 ( NULL == pEventData->pEventData))
18921 {
18922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 }
18927
18928 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18929
18930 /*-------------------------------------------------------------------------
18931 Extract response and send it to UMAC
18932 -------------------------------------------------------------------------*/
18933 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018934 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018935
18936 /*Notify UMAC*/
18937 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18938
Jeff Johnsone7245742012-09-05 17:12:55 -070018939 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018940}/*WDI_ProcessUpdateCfgRsp*/
18941
18942
18943
18944/**
18945 @brief Process Add BA Rsp function (called when a response
18946 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018947
18948 @param pWDICtx: pointer to the WLAN DAL context
18949 pEventData: pointer to the event information structure
18950
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 @see
18952 @return Result of the function call
18953*/
18954WDI_Status
18955WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018956(
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 WDI_ControlBlockType* pWDICtx,
18958 WDI_EventInfoType* pEventData
18959)
18960{
18961 WDI_AddBARspCb wdiAddBARspCb;
18962
18963 tAddBARspParams halAddBARsp;
18964 WDI_AddBARspinfoType wdiAddBARsp;
18965
18966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18967
18968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 -------------------------------------------------------------------------*/
18971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18972 ( NULL == pEventData->pEventData))
18973 {
18974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018978 }
18979
18980 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18981
18982 /*-------------------------------------------------------------------------
18983 Extract response and send it to UMAC
18984 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018985 wpalMemoryCopy( &halAddBARsp,
18986 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 sizeof(halAddBARsp));
18988
18989 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18990
Jeff Johnson43971f52012-07-17 12:26:56 -070018991 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 {
18993 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18994 }
18995
18996 /*Notify UMAC*/
18997 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18998
Jeff Johnsone7245742012-09-05 17:12:55 -070018999 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019000}/*WDI_ProcessAddSessionBARsp*/
19001
19002/**
19003 @brief Process Add BA Rsp function (called when a response
19004 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019005
19006 @param pWDICtx: pointer to the WLAN DAL context
19007 pEventData: pointer to the event information structure
19008
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 @see
19010 @return Result of the function call
19011*/
19012WDI_Status
19013WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019014(
Jeff Johnson295189b2012-06-20 16:38:30 -070019015 WDI_ControlBlockType* pWDICtx,
19016 WDI_EventInfoType* pEventData
19017)
19018{
19019 WDI_TriggerBARspCb wdiTriggerBARspCb;
19020
19021 tTriggerBARspParams* halTriggerBARsp;
19022 tTriggerBaRspCandidate* halBaCandidate;
19023 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19024 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19025 wpt_uint16 index;
19026 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019027 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19029
19030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 -------------------------------------------------------------------------*/
19033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19034 ( NULL == pEventData->pEventData))
19035 {
19036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019040 }
19041
19042 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19043
19044 /*-------------------------------------------------------------------------
19045 Extract response and send it to UMAC
19046 -------------------------------------------------------------------------*/
19047 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19048
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019049 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19050
19051 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19052 {
19053 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019056
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019057 if(NULL == wdiTriggerBARsp)
19058 {
19059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019060 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019061 pWDICtx, pEventData, pEventData->pEventData);
19062 WDI_ASSERT(0);
19063 return WDI_STATUS_E_FAILURE;
19064 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019065
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019066 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19067
Jeff Johnson295189b2012-06-20 16:38:30 -070019068 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019069 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19071
19072 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19073 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19074
19075 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19076 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019077 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19079 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19080 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019081 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19085 }
19086 wdiTriggerBARspCandidate++;
19087 halBaCandidate++;
19088 }
19089 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019090 else
19091 {
19092 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19093
19094 if(NULL == wdiTriggerBARsp)
19095 {
19096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019097 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019098 pWDICtx, pEventData, pEventData->pEventData);
19099 WDI_ASSERT(0);
19100 return WDI_STATUS_E_FAILURE;
19101 }
19102
19103 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19104
19105 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019106
19107 /*Notify UMAC*/
19108 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19109
19110 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019112}/*WDI_ProcessAddSessionBARsp*/
19113
19114/**
19115 @brief Process Update Beacon Params Rsp function (called when a response
19116 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019117
19118 @param pWDICtx: pointer to the WLAN DAL context
19119 pEventData: pointer to the event information structure
19120
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 @see
19122 @return Result of the function call
19123*/
19124WDI_Status
19125WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019126(
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 WDI_ControlBlockType* pWDICtx,
19128 WDI_EventInfoType* pEventData
19129)
19130{
19131 WDI_Status wdiStatus;
19132 eHalStatus halStatus;
19133 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19135
19136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019138 -------------------------------------------------------------------------*/
19139 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19140 ( NULL == pEventData->pEventData))
19141 {
19142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019143 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 }
19147
19148 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19149
19150 /*-------------------------------------------------------------------------
19151 Extract response and send it to UMAC
19152 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 wpalMemoryCopy( &halStatus,
19154 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 sizeof(halStatus));
19156
Jeff Johnsone7245742012-09-05 17:12:55 -070019157 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019158
19159 /*Notify UMAC*/
19160 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19161
Jeff Johnsone7245742012-09-05 17:12:55 -070019162 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019163}/*WDI_ProcessUpdateBeaconParamsRsp*/
19164
19165/**
19166 @brief Process Send Beacon template Rsp function (called when a response
19167 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019168
19169 @param pWDICtx: pointer to the WLAN DAL context
19170 pEventData: pointer to the event information structure
19171
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 @see
19173 @return Result of the function call
19174*/
19175WDI_Status
19176WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019177(
Jeff Johnson295189b2012-06-20 16:38:30 -070019178 WDI_ControlBlockType* pWDICtx,
19179 WDI_EventInfoType* pEventData
19180)
19181{
19182 WDI_Status wdiStatus;
19183 eHalStatus halStatus;
19184 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19186
19187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 -------------------------------------------------------------------------*/
19190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19191 ( NULL == pEventData->pEventData))
19192 {
19193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019197 }
19198
19199 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19200
19201 /*-------------------------------------------------------------------------
19202 Extract response and send it to UMAC
19203 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019204 wpalMemoryCopy( &halStatus,
19205 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019206 sizeof(halStatus));
19207
Jeff Johnsone7245742012-09-05 17:12:55 -070019208 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019209
19210 /*Notify UMAC*/
19211 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19212
Jeff Johnsone7245742012-09-05 17:12:55 -070019213 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019214}/*WDI_ProcessSendBeaconParamsRsp*/
19215
Jeff Johnsone7245742012-09-05 17:12:55 -070019216
Jeff Johnson295189b2012-06-20 16:38:30 -070019217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019220
19221 @param pWDICtx: pointer to the WLAN DAL context
19222 pEventData: pointer to the event information structure
19223
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 @see
19225 @return Result of the function call
19226*/
19227WDI_Status
19228WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019229(
Jeff Johnson295189b2012-06-20 16:38:30 -070019230 WDI_ControlBlockType* pWDICtx,
19231 WDI_EventInfoType* pEventData
19232)
19233{
19234 WDI_Status wdiStatus;
19235 eHalStatus halStatus;
19236 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19238
19239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019241 -------------------------------------------------------------------------*/
19242 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19243 ( NULL == pEventData->pEventData))
19244 {
19245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 }
19250
19251 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19252
19253 /*-------------------------------------------------------------------------
19254 Extract response and send it to UMAC
19255 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019256 wpalMemoryCopy( &halStatus,
19257 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 sizeof(halStatus));
19259
Jeff Johnsone7245742012-09-05 17:12:55 -070019260 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019261
19262 /*Notify UMAC*/
19263 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19264
Jeff Johnsone7245742012-09-05 17:12:55 -070019265 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019266}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19267
19268 /**
19269 @brief Process Set Max Tx Power Rsp function (called when a response
19270 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019271
19272 @param pWDICtx: pointer to the WLAN DAL context
19273 pEventData: pointer to the event information structure
19274
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 @see
19276 @return Result of the function call
19277*/
19278WDI_Status
19279WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019280(
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 WDI_ControlBlockType* pWDICtx,
19282 WDI_EventInfoType* pEventData
19283)
19284{
19285 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019286
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019288
Jeff Johnson295189b2012-06-20 16:38:30 -070019289 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19291
19292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019294 -------------------------------------------------------------------------*/
19295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19296 ( NULL == pEventData->pEventData))
19297 {
19298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019302 }
19303
19304 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19305
19306 /*-------------------------------------------------------------------------
19307 Extract response and send it to UMAC
19308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019309 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19310 pEventData->pEventData,
19311 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019312
19313 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19314 {
19315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19316 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 }
19319
Jeff Johnsone7245742012-09-05 17:12:55 -070019320 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019321 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019322 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019323
19324 /*Notify UMAC*/
19325 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19326
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019328}
19329
schang86c22c42013-03-13 18:41:24 -070019330 /**
19331 @brief Process Set Tx Power Rsp function (called when a response
19332 is being received over the bus from HAL)
19333
19334 @param pWDICtx: pointer to the WLAN DAL context
19335 pEventData: pointer to the event information structure
19336
19337 @see
19338 @return Result of the function call
19339*/
19340WDI_Status
19341WDI_ProcessSetTxPowerRsp
19342(
19343 WDI_ControlBlockType* pWDICtx,
19344 WDI_EventInfoType* pEventData
19345)
19346{
19347 tSetTxPwrRspMsg halTxpowerrsp;
19348 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19349 WDA_SetTxPowerRspCb wdiReqStatusCb;
19350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19351
19352 /*-------------------------------------------------------------------------
19353 Sanity check
19354 -------------------------------------------------------------------------*/
19355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19356 ( NULL == pEventData->pEventData))
19357 {
19358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19359 "%s: Invalid parameters", __func__);
19360 WDI_ASSERT(0);
19361 return WDI_STATUS_E_FAILURE;
19362 }
19363
19364 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19365
19366 /*-------------------------------------------------------------------------
19367 Extract response and send it to UMAC
19368 -------------------------------------------------------------------------*/
19369 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19370 pEventData->pEventData,
19371 sizeof(halTxpowerrsp.setTxPwrRspParams));
19372
19373 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19374 {
19375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19376 "Error status returned in Set Tx Power Response ");
19377 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19378 return WDI_STATUS_E_FAILURE;
19379 }
19380
19381 wdiSetTxPowerRspMsg.wdiStatus =
19382 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19383
19384 /*Notify UMAC*/
19385 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19386
19387 return WDI_STATUS_SUCCESS;
19388}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019389
19390/**
19391 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19392 is being received over the bus from HAL)
19393
19394 @param pWDICtx: pointer to the WLAN DAL context
19395 pEventData: pointer to the event information structure
19396
19397 @see
19398 @return Result of the function call
19399*/
19400WDI_Status
19401WDI_ProcessSetMaxTxPowerPerBandRsp
19402(
19403 WDI_ControlBlockType* pWDICtx,
19404 WDI_EventInfoType* pEventData
19405)
19406{
19407 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19408 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19409 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19411
19412 /*-------------------------------------------------------------------------
19413 Sanity check
19414 -------------------------------------------------------------------------*/
19415 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19416 ( NULL == pEventData->pEventData))
19417 {
19418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19419 "%s: Invalid parameters", __func__);
19420 WDI_ASSERT(0);
19421 return WDI_STATUS_E_FAILURE;
19422 }
19423
19424 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19425
19426 /*-------------------------------------------------------------------------
19427 Extract response and send it to UMAC
19428 -------------------------------------------------------------------------*/
19429 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19430 pEventData->pEventData,
19431 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19432
19433 if (eHAL_STATUS_SUCCESS !=
19434 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19435 {
19436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19437 "Error status returned in Set Max Tx Power Per Band Response");
19438 return WDI_STATUS_E_FAILURE;
19439 }
19440
19441 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19442 WDI_HAL_2_WDI_STATUS(
19443 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19444
19445 /* Notify UMAC */
19446 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19447
19448 return WDI_STATUS_SUCCESS;
19449}
19450
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019451#ifdef FEATURE_WLAN_TDLS
19452/**
19453 @brief Process TDLS Link Establish Rsp function (called
19454 when a response is being received over the bus from HAL)
19455
19456 @param pWDICtx: pointer to the WLAN DAL context
19457 pEventData: pointer to the event information structure
19458
19459 @see
19460 @return Result of the function call
19461*/
19462WDI_Status
19463WDI_ProcessLinkEstablishReqRsp
19464(
19465 WDI_ControlBlockType* pWDICtx,
19466 WDI_EventInfoType* pEventData
19467)
19468{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019469 eHalStatus halStatus;
19470 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019471 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19472 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19473
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019488 /*-------------------------------------------------------------------------
19489 Extract indication and send it to UMAC
19490 -------------------------------------------------------------------------*/
19491 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19492 pEventData->pEventData,
19493 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19494
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019495 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19496
19497 /*-------------------------------------------------------------------------
19498 Extract response and send it to UMAC
19499 -------------------------------------------------------------------------*/
19500 wpalMemoryCopy( &halStatus,
19501 pEventData->pEventData,
19502 sizeof(halStatus));
19503
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019504 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19505 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019506
19507 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019508 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019509
19510 return WDI_STATUS_SUCCESS;
19511}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019512
19513
19514
19515/**
19516 @brief Process TDLS Chan switch Rsp function (called
19517 when a response is being received over the bus from HAL)
19518
19519 @param pWDICtx: pointer to the WLAN DAL context
19520 pEventData: pointer to the event information structure
19521
19522 @see
19523 @return Result of the function call
19524*/
19525WDI_Status
19526WDI_ProcessChanSwitchReqRsp
19527(
19528 WDI_ControlBlockType* pWDICtx,
19529 WDI_EventInfoType* pEventData
19530)
19531{
19532 eHalStatus halStatus;
19533 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19534 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19535 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19536
19537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19538
19539 /*-------------------------------------------------------------------------
19540 Sanity check
19541 -------------------------------------------------------------------------*/
19542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19543 ( NULL == pEventData->pEventData))
19544 {
19545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19546 "%s: Invalid parameters", __func__);
19547 WDI_ASSERT(0);
19548 return WDI_STATUS_E_FAILURE;
19549 }
19550
19551 /*-------------------------------------------------------------------------
19552 Extract indication and send it to UMAC
19553 -------------------------------------------------------------------------*/
19554 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19555 pEventData->pEventData,
19556 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19557
19558 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19559
19560 /*-------------------------------------------------------------------------
19561 Extract response and send it to UMAC
19562 -------------------------------------------------------------------------*/
19563 wpalMemoryCopy( &halStatus,
19564 pEventData->pEventData,
19565 sizeof(halStatus));
19566
19567 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19568 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19569
19570 /*Notify UMAC*/
19571 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19572
19573 return WDI_STATUS_SUCCESS;
19574}/*WDI_ProcessChanSwitchReqRsp*/
19575
19576
19577
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019578#endif
schang86c22c42013-03-13 18:41:24 -070019579
Jeff Johnson295189b2012-06-20 16:38:30 -070019580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019581 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019583
19584 @param pWDICtx: pointer to the WLAN DAL context
19585 pEventData: pointer to the event information structure
19586
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 @see
19588 @return Result of the function call
19589*/
19590WDI_Status
19591WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019592(
Jeff Johnson295189b2012-06-20 16:38:30 -070019593 WDI_ControlBlockType* pWDICtx,
19594 WDI_EventInfoType* pEventData
19595)
19596{
19597 WDI_Status wdiStatus;
19598 eHalStatus halStatus;
19599 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19601
19602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 -------------------------------------------------------------------------*/
19605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19606 ( NULL == pEventData->pEventData))
19607 {
19608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 }
19613
19614 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19615
19616 /*-------------------------------------------------------------------------
19617 Extract response and send it to UMAC
19618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 wpalMemoryCopy( &halStatus,
19620 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019621 sizeof(halStatus));
19622
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019624
19625 /*Notify UMAC*/
19626 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19627
Jeff Johnsone7245742012-09-05 17:12:55 -070019628 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019629}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019630/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019631 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019633
19634 @param pWDICtx: pointer to the WLAN DAL context
19635 pEventData: pointer to the event information structure
19636
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 @see
19638 @return Result of the function call
19639*/
19640WDI_Status
19641WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019642(
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 WDI_ControlBlockType* pWDICtx,
19644 WDI_EventInfoType* pEventData
19645)
19646{
19647 WDI_Status wdiStatus;
19648 eHalStatus halStatus;
19649 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019650 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19652
19653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 -------------------------------------------------------------------------*/
19656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19657 ( NULL == pEventData->pEventData))
19658 {
19659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 }
19664
19665 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19666
19667 /*-------------------------------------------------------------------------
19668 Extract response and send it to UMAC
19669 -------------------------------------------------------------------------*/
19670 halStatus = *((eHalStatus*)pEventData->pEventData);
19671
Jeff Johnsone7245742012-09-05 17:12:55 -070019672 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019673
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019674 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19675 * Other module states are taken care by PMC.
19676 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19677 */
19678 if (wdiStatus != WDI_STATUS_SUCCESS) {
19679
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19681 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19682 halStatus);
19683 /* Call Back is not required as we are putting the DXE in FULL
19684 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019685 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19686
19687 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019689 "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 -080019690 WDI_ASSERT(0);
19691 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019692 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019693 /*Notify UMAC*/
19694 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19695
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019697}/*WDI_ProcessEnterImpsRsp*/
19698
19699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019702
19703 @param pWDICtx: pointer to the WLAN DAL context
19704 pEventData: pointer to the event information structure
19705
Jeff Johnson295189b2012-06-20 16:38:30 -070019706 @see
19707 @return Result of the function call
19708*/
19709WDI_Status
19710WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019711(
Jeff Johnson295189b2012-06-20 16:38:30 -070019712 WDI_ControlBlockType* pWDICtx,
19713 WDI_EventInfoType* pEventData
19714)
19715{
19716 WDI_Status wdiStatus;
19717 eHalStatus halStatus;
19718 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019719 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19721
19722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 -------------------------------------------------------------------------*/
19725 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19726 ( NULL == pEventData->pEventData))
19727 {
19728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 }
19733
19734 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19735
19736 /*-------------------------------------------------------------------------
19737 Extract response and send it to UMAC
19738 -------------------------------------------------------------------------*/
19739 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019741
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019742 if (halStatus != eHAL_STATUS_SUCCESS)
19743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19744 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19745
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019747 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19748 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19749 {
19750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019751 "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 -080019752 WDI_ASSERT(0);
19753 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 /*Notify UMAC*/
19755 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19756
Jeff Johnsone7245742012-09-05 17:12:55 -070019757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019758}/*WDI_ProcessExitImpsRsp*/
19759
19760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019763
19764 @param pWDICtx: pointer to the WLAN DAL context
19765 pEventData: pointer to the event information structure
19766
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 @see
19768 @return Result of the function call
19769*/
19770WDI_Status
19771WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019772(
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 WDI_ControlBlockType* pWDICtx,
19774 WDI_EventInfoType* pEventData
19775)
19776{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019777 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19778 tHalEnterBmpsRspParams halEnterBmpsRsp;
19779 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19780 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019781 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19783
19784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019786 -------------------------------------------------------------------------*/
19787 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19788 ( NULL == pEventData->pEventData))
19789 {
19790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019794 }
19795
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019797 Extract response and send it to UMAC
19798 -------------------------------------------------------------------------*/
19799 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19800 {
19801 wpalMemoryCopy( &halEnterBmpsRsp,
19802 pEventData->pEventData,
19803 sizeof(halEnterBmpsRsp));
19804
19805 //Used to print debug message
19806 halStatus = halEnterBmpsRsp.status;
19807 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19808 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19809 }
19810 else
19811 {
19812 halStatus = *((eHalStatus*)pEventData->pEventData);
19813 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19814 }
19815
19816 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019817
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019818 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19819 * Other module states are taken care by PMC.
19820 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19821 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019822 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19823 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019824
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019826 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19827 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019828 /* Call Back is not required as we are putting the DXE in FULL
19829 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019830 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19831 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19832 {
19833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019834 "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 -080019835 WDI_ASSERT(0);
19836 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019837 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019838 }
19839
Jeff Johnson295189b2012-06-20 16:38:30 -070019840 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019841 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019842
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019844}/*WDI_ProcessEnterBmpsRsp*/
19845
19846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019849
19850 @param pWDICtx: pointer to the WLAN DAL context
19851 pEventData: pointer to the event information structure
19852
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 @see
19854 @return Result of the function call
19855*/
19856WDI_Status
19857WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019858(
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 WDI_ControlBlockType* pWDICtx,
19860 WDI_EventInfoType* pEventData
19861)
19862{
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 eHalStatus halStatus;
19864 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019865 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019866 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19867 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19869
19870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019872 -------------------------------------------------------------------------*/
19873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19874 ( NULL == pEventData->pEventData))
19875 {
19876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019880 }
19881
19882 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19883
19884 /*-------------------------------------------------------------------------
19885 Extract response and send it to UMAC
19886 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019887
19888 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19889 {
19890 wpalMemoryCopy( &halExitBmpsRsp,
19891 pEventData->pEventData,
19892 sizeof(halExitBmpsRsp));
19893
19894 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19895 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19896 }
19897 else
19898 {
19899 halStatus = *((eHalStatus*)pEventData->pEventData);
19900 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19901 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019902
19903 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019904 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19905 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19906 {
19907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019908 "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 -080019909 WDI_ASSERT(0);
19910 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019911 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19912
19913 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019914 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019915
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019917}/*WDI_ProcessExitBmpsRsp*/
19918
19919/**
19920 @brief Process Enter UAPSD Rsp function (called when a response
19921 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019922
19923 @param pWDICtx: pointer to the WLAN DAL context
19924 pEventData: pointer to the event information structure
19925
Jeff Johnson295189b2012-06-20 16:38:30 -070019926 @see
19927 @return Result of the function call
19928*/
19929WDI_Status
19930WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019931(
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 WDI_ControlBlockType* pWDICtx,
19933 WDI_EventInfoType* pEventData
19934)
19935{
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019937 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019939 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19940
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19942
19943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 -------------------------------------------------------------------------*/
19946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19947 ( NULL == pEventData->pEventData))
19948 {
19949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 }
19954
19955 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19956
19957 /*-------------------------------------------------------------------------
19958 Extract response and send it to UMAC
19959 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019960 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19961 {
19962 wpalMemoryCopy( &halEnterUapsdRsp,
19963 pEventData->pEventData,
19964 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019965
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019966 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19967 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19968 }
19969 else
19970 {
19971 halStatus = *((eHalStatus*)pEventData->pEventData);
19972 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19973 }
19974
19975 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019976 {
19977 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19978 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19979 // the traffic to decide when to suspend the trigger frames when there is no traffic
19980 // activity on the trigger enabled ACs
19981 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19982
19983#ifdef WLAN_PERF
19984 // Increment the BD signature to refresh the fast path BD utilization
19985 pWDICtx->uBdSigSerialNum++;
19986#endif
19987 }
19988
19989 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019990 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019991
Jeff Johnsone7245742012-09-05 17:12:55 -070019992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019993}/*WDI_ProcessEnterUapsdRsp*/
19994
19995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019998
19999 @param pWDICtx: pointer to the WLAN DAL context
20000 pEventData: pointer to the event information structure
20001
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 @see
20003 @return Result of the function call
20004*/
20005WDI_Status
20006WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020007(
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 WDI_ControlBlockType* pWDICtx,
20009 WDI_EventInfoType* pEventData
20010)
20011{
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 eHalStatus halStatus;
20013 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020014 tHalExitUapsdRspParams halExitUapsdRsp;
20015 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20017
20018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 -------------------------------------------------------------------------*/
20021 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20022 ( NULL == pEventData->pEventData))
20023 {
20024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020028 }
20029
20030 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20031
20032 /*-------------------------------------------------------------------------
20033 Extract response and send it to UMAC
20034 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020035 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20036 {
20037 wpalMemoryCopy( &halExitUapsdRsp,
20038 pEventData->pEventData,
20039 sizeof(halExitUapsdRsp));
20040
20041 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20042 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20043 }
20044 else
20045 {
20046 halStatus = *((eHalStatus*)pEventData->pEventData);
20047 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20048 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20050 // directly instead of the FW WQ.
20051 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20052
20053#ifdef WLAN_PERF
20054 // Increment the BD signature to refresh the fast path BD utilization
20055 pWDICtx->uBdSigSerialNum++;
20056#endif
20057
20058 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020059 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020060
Jeff Johnsone7245742012-09-05 17:12:55 -070020061 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020062}/*WDI_ProcessExitUapsdRsp*/
20063
20064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020067
20068 @param pWDICtx: pointer to the WLAN DAL context
20069 pEventData: pointer to the event information structure
20070
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 @see
20072 @return Result of the function call
20073*/
20074WDI_Status
20075WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020076(
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 WDI_ControlBlockType* pWDICtx,
20078 WDI_EventInfoType* pEventData
20079)
20080{
20081 WDI_Status wdiStatus;
20082 eHalStatus halStatus;
20083 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20085
20086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 -------------------------------------------------------------------------*/
20089 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20090 ( NULL == pEventData->pEventData))
20091 {
20092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 }
20097
20098 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20099
20100 /*-------------------------------------------------------------------------
20101 Extract response and send it to UMAC
20102 -------------------------------------------------------------------------*/
20103 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020104 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020105
20106 /*Notify UMAC*/
20107 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20108
Jeff Johnsone7245742012-09-05 17:12:55 -070020109 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020110}/*WDI_ProcessSetUapsdAcParamsRsp*/
20111
20112/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020113 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020115
20116 @param pWDICtx: pointer to the WLAN DAL context
20117 pEventData: pointer to the event information structure
20118
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 @see
20120 @return Result of the function call
20121*/
20122WDI_Status
20123WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020124(
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 WDI_ControlBlockType* pWDICtx,
20126 WDI_EventInfoType* pEventData
20127)
20128{
20129 WDI_Status wdiStatus;
20130 eHalStatus halStatus;
20131 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20133
20134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020135 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020136 -------------------------------------------------------------------------*/
20137 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20138 ( NULL == pEventData->pEventData))
20139 {
20140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020144 }
20145
20146 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20147
20148 /*-------------------------------------------------------------------------
20149 Extract response and send it to UMAC
20150 -------------------------------------------------------------------------*/
20151 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020152 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020153
20154 /*Notify UMAC*/
20155 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20156
Jeff Johnsone7245742012-09-05 17:12:55 -070020157 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020158}/*WDI_ProcessUpdateUapsdParamsRsp*/
20159
20160/**
20161 @brief Process Configure RXP filter Rsp function (called when a
20162 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020163
20164 @param pWDICtx: pointer to the WLAN DAL context
20165 pEventData: pointer to the event information structure
20166
Jeff Johnson295189b2012-06-20 16:38:30 -070020167 @see
20168 @return Result of the function call
20169*/
20170WDI_Status
20171WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020172(
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 WDI_ControlBlockType* pWDICtx,
20174 WDI_EventInfoType* pEventData
20175)
20176{
20177 WDI_Status wdiStatus;
20178 eHalStatus halStatus;
20179 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20181
20182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 -------------------------------------------------------------------------*/
20185 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20186 ( NULL == pEventData->pEventData))
20187 {
20188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020192 }
20193
20194 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20195
20196 /*-------------------------------------------------------------------------
20197 Extract response and send it to UMAC
20198 -------------------------------------------------------------------------*/
20199 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020200 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020201
20202 /*Notify UMAC*/
20203 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20204
Jeff Johnsone7245742012-09-05 17:12:55 -070020205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020206}/*WDI_ProcessConfigureRxpFilterRsp*/
20207
20208/**
20209 @brief Process Set beacon filter Rsp function (called when a
20210 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020211
20212 @param pWDICtx: pointer to the WLAN DAL context
20213 pEventData: pointer to the event information structure
20214
Jeff Johnson295189b2012-06-20 16:38:30 -070020215 @see
20216 @return Result of the function call
20217*/
20218WDI_Status
20219WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020220(
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 WDI_ControlBlockType* pWDICtx,
20222 WDI_EventInfoType* pEventData
20223)
20224{
20225 WDI_Status wdiStatus;
20226 eHalStatus halStatus;
20227 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20229
20230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 -------------------------------------------------------------------------*/
20233 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20234 ( NULL == pEventData->pEventData))
20235 {
20236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 }
20241
20242 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20243
20244 /*-------------------------------------------------------------------------
20245 Extract response and send it to UMAC
20246 -------------------------------------------------------------------------*/
20247 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020248 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020249
20250 /*Notify UMAC*/
20251 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20252
Jeff Johnsone7245742012-09-05 17:12:55 -070020253 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020254}/*WDI_ProcessSetBeaconFilterRsp*/
20255
20256/**
20257 @brief Process remove beacon filter Rsp function (called when a
20258 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020259
20260 @param pWDICtx: pointer to the WLAN DAL context
20261 pEventData: pointer to the event information structure
20262
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 @see
20264 @return Result of the function call
20265*/
20266WDI_Status
20267WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020268(
Jeff Johnson295189b2012-06-20 16:38:30 -070020269 WDI_ControlBlockType* pWDICtx,
20270 WDI_EventInfoType* pEventData
20271)
20272{
20273 WDI_Status wdiStatus;
20274 eHalStatus halStatus;
20275 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20277
20278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 -------------------------------------------------------------------------*/
20281 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20282 ( NULL == pEventData->pEventData))
20283 {
20284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020288 }
20289
20290 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20291
20292 /*-------------------------------------------------------------------------
20293 Extract response and send it to UMAC
20294 -------------------------------------------------------------------------*/
20295 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020296 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020297
20298 /*Notify UMAC*/
20299 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20300
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020302}/*WDI_ProcessRemBeaconFilterRsp*/
20303
20304/**
20305 @brief Process set RSSI thresholds Rsp function (called when a
20306 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020307
20308 @param pWDICtx: pointer to the WLAN DAL context
20309 pEventData: pointer to the event information structure
20310
Jeff Johnson295189b2012-06-20 16:38:30 -070020311 @see
20312 @return Result of the function call
20313*/
20314WDI_Status
20315WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020316(
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 WDI_ControlBlockType* pWDICtx,
20318 WDI_EventInfoType* pEventData
20319)
20320{
20321 WDI_Status wdiStatus;
20322 eHalStatus halStatus;
20323 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20325
20326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 -------------------------------------------------------------------------*/
20329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20330 ( NULL == pEventData->pEventData))
20331 {
20332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 }
20337
20338 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20339
20340 /*-------------------------------------------------------------------------
20341 Extract response and send it to UMAC
20342 -------------------------------------------------------------------------*/
20343 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020344 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020345
20346 /*Notify UMAC*/
20347 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20348
Jeff Johnsone7245742012-09-05 17:12:55 -070020349 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020350}/*WDI_ProcessSetRSSIThresoldsRsp*/
20351
20352/**
20353 @brief Process host offload Rsp function (called when a
20354 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020355
20356 @param pWDICtx: pointer to the WLAN DAL context
20357 pEventData: pointer to the event information structure
20358
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 @see
20360 @return Result of the function call
20361*/
20362WDI_Status
20363WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020364(
Jeff Johnson295189b2012-06-20 16:38:30 -070020365 WDI_ControlBlockType* pWDICtx,
20366 WDI_EventInfoType* pEventData
20367)
20368{
20369 WDI_Status wdiStatus;
20370 eHalStatus halStatus;
20371 WDI_HostOffloadCb wdiHostOffloadCb;
20372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20373
20374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 -------------------------------------------------------------------------*/
20377 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20378 ( NULL == pEventData->pEventData))
20379 {
20380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020384 }
20385
20386 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20387
20388 /*-------------------------------------------------------------------------
20389 Extract response and send it to UMAC
20390 -------------------------------------------------------------------------*/
20391 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020392 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020393
20394 /*Notify UMAC*/
20395 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20396
Jeff Johnsone7245742012-09-05 17:12:55 -070020397 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020398}/*WDI_ProcessHostOffloadRsp*/
20399
20400/**
20401 @brief Process keep alive Rsp function (called when a
20402 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020403
20404 @param pWDICtx: pointer to the WLAN DAL context
20405 pEventData: pointer to the event information structure
20406
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 @see
20408 @return Result of the function call
20409*/
20410WDI_Status
20411WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020412(
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 WDI_ControlBlockType* pWDICtx,
20414 WDI_EventInfoType* pEventData
20415)
20416{
20417 WDI_Status wdiStatus;
20418 eHalStatus halStatus;
20419 WDI_KeepAliveCb wdiKeepAliveCb;
20420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20422 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20423
20424
20425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020427 -------------------------------------------------------------------------*/
20428 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20429 ( NULL == pEventData->pEventData))
20430 {
20431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020435 }
20436
Jeff Johnsone7245742012-09-05 17:12:55 -070020437 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20438
Jeff Johnson295189b2012-06-20 16:38:30 -070020439 /*-------------------------------------------------------------------------
20440 Extract response and send it to UMAC
20441 -------------------------------------------------------------------------*/
20442 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020443 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020444
20445 /*Notify UMAC*/
20446 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20447
Jeff Johnsone7245742012-09-05 17:12:55 -070020448 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020449}/*WDI_ProcessKeepAliveRsp*/
20450
20451/**
20452 @brief Process wowl add ptrn Rsp function (called when a
20453 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020454
20455 @param pWDICtx: pointer to the WLAN DAL context
20456 pEventData: pointer to the event information structure
20457
Jeff Johnson295189b2012-06-20 16:38:30 -070020458 @see
20459 @return Result of the function call
20460*/
20461WDI_Status
20462WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020463(
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 WDI_ControlBlockType* pWDICtx,
20465 WDI_EventInfoType* pEventData
20466)
20467{
Jeff Johnson295189b2012-06-20 16:38:30 -070020468 eHalStatus halStatus;
20469 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020470 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20471 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20472
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20474
20475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 -------------------------------------------------------------------------*/
20478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20479 ( NULL == pEventData->pEventData))
20480 {
20481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 }
20486
20487 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20488
20489 /*-------------------------------------------------------------------------
20490 Extract response and send it to UMAC
20491 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020492 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20493 {
20494 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20495 pEventData->pEventData,
20496 sizeof(halAddWowlBcastPtrRsp));
20497
20498 wdiWowlAddBcPtrRsp.wdiStatus =
20499 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20500 }
20501 else
20502 {
20503 halStatus = *((eHalStatus*)pEventData->pEventData);
20504 wdiWowlAddBcPtrRsp.wdiStatus =
20505 WDI_HAL_2_WDI_STATUS(halStatus);
20506 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020507
20508 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020509 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020510
Jeff Johnsone7245742012-09-05 17:12:55 -070020511 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020512}/*WDI_ProcessWowlAddBcPtrnRsp*/
20513
20514/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020517
20518 @param pWDICtx: pointer to the WLAN DAL context
20519 pEventData: pointer to the event information structure
20520
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 @see
20522 @return Result of the function call
20523*/
20524WDI_Status
20525WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020526(
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 WDI_ControlBlockType* pWDICtx,
20528 WDI_EventInfoType* pEventData
20529)
20530{
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 eHalStatus halStatus;
20532 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020533 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20534 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20536
20537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020539 -------------------------------------------------------------------------*/
20540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20541 ( NULL == pEventData->pEventData))
20542 {
20543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 }
20548
20549 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20550
20551 /*-------------------------------------------------------------------------
20552 Extract response and send it to UMAC
20553 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020554 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20555 {
20556 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20557 pEventData->pEventData,
20558 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020559
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020560 wdiWowlDelBcstPtrRsp.wdiStatus =
20561 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20562 }
20563 else
20564 {
20565 halStatus = *((eHalStatus*)pEventData->pEventData);
20566 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20567 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020568 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020569 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020570
Jeff Johnsone7245742012-09-05 17:12:55 -070020571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020572}/*WDI_ProcessWowlDelBcPtrnRsp*/
20573
20574/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020575 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020577
20578 @param pWDICtx: pointer to the WLAN DAL context
20579 pEventData: pointer to the event information structure
20580
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 @see
20582 @return Result of the function call
20583*/
20584WDI_Status
20585WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020586(
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 WDI_ControlBlockType* pWDICtx,
20588 WDI_EventInfoType* pEventData
20589)
20590{
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 eHalStatus halStatus;
20592 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020593 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20594 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20596
20597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 -------------------------------------------------------------------------*/
20600 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20601 ( NULL == pEventData->pEventData))
20602 {
20603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020607 }
20608
20609 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20610
20611 /*-------------------------------------------------------------------------
20612 Extract response and send it to UMAC
20613 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020614 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20615 {
20616 wpalMemoryCopy( &halEnterWowlRspParams,
20617 (wpt_uint8*)pEventData->pEventData,
20618 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020619
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020620 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20621 wdiwowlEnterRsp.status =
20622 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20623 }
20624 else
20625 {
20626 halStatus = *((eHalStatus*)pEventData->pEventData);
20627 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20628 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020630 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020631
Jeff Johnsone7245742012-09-05 17:12:55 -070020632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020633}/*WDI_ProcessWowlEnterRsp*/
20634
20635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020638
20639 @param pWDICtx: pointer to the WLAN DAL context
20640 pEventData: pointer to the event information structure
20641
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 @see
20643 @return Result of the function call
20644*/
20645WDI_Status
20646WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020647(
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 WDI_ControlBlockType* pWDICtx,
20649 WDI_EventInfoType* pEventData
20650)
20651{
Jeff Johnson295189b2012-06-20 16:38:30 -070020652 eHalStatus halStatus;
20653 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020654 tHalExitWowlRspParams halExitWowlRspParams;
20655 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20656
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20658
20659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 -------------------------------------------------------------------------*/
20662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20663 ( NULL == pEventData->pEventData))
20664 {
20665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 }
20670
20671 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20672
20673 /*-------------------------------------------------------------------------
20674 Extract response and send it to UMAC
20675 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020676 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20677 {
20678 wpalMemoryCopy( &halExitWowlRspParams,
20679 pEventData->pEventData,
20680 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020681
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020682 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20683 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20684
20685 }
20686 else
20687 {
20688 halStatus = *((eHalStatus*)pEventData->pEventData);
20689 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20690 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020692 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020693
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020695}/*WDI_ProcessWowlExitRsp*/
20696
20697/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 (called when a response is being received over the bus
20700 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020701
20702 @param pWDICtx: pointer to the WLAN DAL context
20703 pEventData: pointer to the event information structure
20704
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 @see
20706 @return Result of the function call
20707*/
20708WDI_Status
20709WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020710(
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 WDI_ControlBlockType* pWDICtx,
20712 WDI_EventInfoType* pEventData
20713)
20714{
20715 WDI_Status wdiStatus;
20716 eHalStatus halStatus;
20717 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20719
20720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 -------------------------------------------------------------------------*/
20723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20724 ( NULL == pEventData->pEventData))
20725 {
20726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 }
20731
20732 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20733
20734 /*-------------------------------------------------------------------------
20735 Extract response and send it to UMAC
20736 -------------------------------------------------------------------------*/
20737 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020738 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020739
20740 /*Notify UMAC*/
20741 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20742
Jeff Johnsone7245742012-09-05 17:12:55 -070020743 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020744}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20745
20746
20747/**
20748 @brief Process Nv download(called when a response
20749 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020750
20751 @param pWDICtx: pointer to the WLAN DAL context
20752 pEventData: pointer to the event information structure
20753
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 @see
20755 @return Result of the function call
20756*/
20757WDI_Status
20758WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020759(
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 WDI_ControlBlockType* pWDICtx,
20761 WDI_EventInfoType* pEventData
20762)
20763{
20764
20765 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20766 tHalNvImgDownloadRspParams halNvDownloadRsp;
20767 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20768
20769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 -------------------------------------------------------------------------*/
20772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20773 ( NULL == pEventData->pEventData))
20774 {
20775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 }
20780
20781 /*-------------------------------------------------------------------------
20782 Extract response and send it to UMAC
20783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 wpalMemoryCopy( &halNvDownloadRsp,
20785 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 sizeof(halNvDownloadRsp));
20787
20788 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20789
20790 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20792 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 {
20794 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020795 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 }
20797 else
20798 {
20799 /*Reset the Nv related global information in WDI context information */
20800 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20801 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20802 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20803 /*call WDA callback function for last fragment */
20804 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20805 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20806 }
20807
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020809}
20810#ifdef WLAN_FEATURE_VOWIFI_11R
20811/**
20812 @brief Process Add TSpec Rsp function (called when a response
20813 is being received over the bus from HAL)
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_ProcessAggrAddTSpecRsp
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 WDI_Status wdiStatus;
20829 tAggrAddTsRspParams aggrAddTsRsp;
20830 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20846
20847 /*-------------------------------------------------------------------------
20848 Extract response and send it to UMAC
20849 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 wpalMemoryCopy( &aggrAddTsRsp,
20851 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 sizeof(aggrAddTsRsp));
20853
20854 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020855 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020856
20857 /*Notify UMAC*/
20858 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20859
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020861}/*WDI_ProcessAddTSpecRsp*/
20862#endif /* WLAN_FEATURE_VOWIFI_11R */
20863
20864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020865 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020867
20868 @param pWDICtx: pointer to the WLAN DAL context
20869 pEventData: pointer to the event information structure
20870
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 @see
20872 @return Result of the function call
20873*/
20874WDI_Status
20875WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020876(
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 WDI_ControlBlockType* pWDICtx,
20878 WDI_EventInfoType* pEventData
20879)
20880{
20881 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20882 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20883 tHalHostResumeRspParams hostResumeRspMsg;
20884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20885
20886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 -------------------------------------------------------------------------*/
20889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20890 ( NULL == pEventData->pEventData))
20891 {
20892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 }
20897
20898 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20899
20900 /*-------------------------------------------------------------------------
20901 Extract response and send it to UMAC
20902 -------------------------------------------------------------------------*/
20903
Jeff Johnsone7245742012-09-05 17:12:55 -070020904 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020905 (wpt_uint8*)pEventData->pEventData,
20906 sizeof(hostResumeRspMsg));
20907
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 wdiResumeRspParams.wdiStatus =
20909 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020910
20911 /*Notify UMAC*/
20912 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20913
20914 return WDI_STATUS_SUCCESS;
20915}
20916
20917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020918 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020920
20921 @param pWDICtx: pointer to the WLAN DAL context
20922 pEventData: pointer to the event information structure
20923
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 @see
20925 @return Result of the function call
20926*/
20927WDI_Status
20928WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020929(
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 WDI_ControlBlockType* pWDICtx,
20931 WDI_EventInfoType* pEventData
20932)
20933{
20934 WDI_Status wdiStatus;
20935 eHalStatus halStatus;
20936 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20938
20939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 -------------------------------------------------------------------------*/
20942 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20943 ( NULL == pEventData->pEventData))
20944 {
20945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020949 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020950
20951 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020952
20953 /*-------------------------------------------------------------------------
20954 Extract response and send it to UMAC
20955 -------------------------------------------------------------------------*/
20956 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020958
20959 /*Notify UMAC*/
20960 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20961
Jeff Johnsone7245742012-09-05 17:12:55 -070020962 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020963}/*WDI_ProcessSetTxPerTrackingRsp*/
20964
20965/*==========================================================================
20966 Indications from HAL
20967 ==========================================================================*/
20968/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020969 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 indication of this kind is being received over the bus
20971 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020972
20973 @param pWDICtx: pointer to the WLAN DAL context
20974 pEventData: pointer to the event information structure
20975
Jeff Johnson295189b2012-06-20 16:38:30 -070020976 @see
20977 @return Result of the function call
20978*/
20979WDI_Status
20980WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020981(
Jeff Johnson295189b2012-06-20 16:38:30 -070020982 WDI_ControlBlockType* pWDICtx,
20983 WDI_EventInfoType* pEventData
20984)
20985{
20986 WDI_LowLevelIndType wdiInd;
20987 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20989
20990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 -------------------------------------------------------------------------*/
20993 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20994 ( NULL == pEventData->pEventData))
20995 {
20996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 }
21001
21002 /*-------------------------------------------------------------------------
21003 Extract indication and send it to UMAC
21004 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21006 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 sizeof(tHalRSSINotification));
21008
21009 /*Fill in the indication parameters*/
21010 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21011 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21012 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21013 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21014 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21015 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21016 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21017 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21018 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21019 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21020 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21021 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21022 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021023 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21024 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021025
ltimariub77f24b2013-01-24 18:54:33 -080021026 if ( pWDICtx->wdiLowLevelIndCB )
21027 {
21028 /*Notify UMAC of indication*/
21029 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21030 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021031
21032 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021033}/*WDI_ProcessLowRSSIInd*/
21034
21035
21036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021037 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 an indication of this kind is being received over the
21039 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021040
21041 @param pWDICtx: pointer to the WLAN DAL context
21042 pEventData: pointer to the event information structure
21043
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 @see
21045 @return Result of the function call
21046*/
21047WDI_Status
21048WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021049(
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 WDI_ControlBlockType* pWDICtx,
21051 WDI_EventInfoType* pEventData
21052)
21053{
21054 WDI_Status wdiStatus;
21055 eHalStatus halStatus;
21056 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021057 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21059
21060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 -------------------------------------------------------------------------*/
21063 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21064 ( NULL == pEventData->pEventData))
21065 {
21066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021071 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021072 /*-------------------------------------------------------------------------
21073 Extract indication and send it to UMAC
21074 -------------------------------------------------------------------------*/
21075 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21076 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021078
21079 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021081 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21082 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021083 if ( pWDICtx->wdiLowLevelIndCB )
21084 {
21085 /*Notify UMAC*/
21086 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21087 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021088
21089 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021090}/*WDI_ProcessMissedBeaconInd*/
21091
21092
21093/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 an indication of this kind is being received over the
21096 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021097
21098 @param pWDICtx: pointer to the WLAN DAL context
21099 pEventData: pointer to the event information structure
21100
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 @see
21102 @return Result of the function call
21103*/
21104WDI_Status
21105WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021106(
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 WDI_ControlBlockType* pWDICtx,
21108 WDI_EventInfoType* pEventData
21109)
21110{
21111 WDI_Status wdiStatus;
21112 eHalStatus halStatus;
21113 WDI_LowLevelIndType wdiInd;
21114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21115
21116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 -------------------------------------------------------------------------*/
21119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21120 ( NULL == pEventData->pEventData))
21121 {
21122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 }
21127
21128 /*-------------------------------------------------------------------------
21129 Extract indication and send it to UMAC
21130 -------------------------------------------------------------------------*/
21131 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21132 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021134
21135 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021136 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 /* ! TO DO - fill in from HAL struct:
21138 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21139
ltimariub77f24b2013-01-24 18:54:33 -080021140 if ( pWDICtx->wdiLowLevelIndCB )
21141 {
21142 /*Notify UMAC*/
21143 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21144 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021145
21146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021147}/*WDI_ProcessUnkAddrFrameInd*/
21148
21149
21150/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021151 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 indication of this kind is being received over the bus
21153 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021154
21155 @param pWDICtx: pointer to the WLAN DAL context
21156 pEventData: pointer to the event information structure
21157
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 @see
21159 @return Result of the function call
21160*/
21161WDI_Status
21162WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021163(
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 WDI_ControlBlockType* pWDICtx,
21165 WDI_EventInfoType* pEventData
21166)
21167{
21168 WDI_LowLevelIndType wdiInd;
21169 tpSirMicFailureInd pHalMicFailureInd;
21170
21171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21172
21173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 -------------------------------------------------------------------------*/
21176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21177 ( NULL == pEventData->pEventData))
21178 {
21179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021184
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21186 /*-------------------------------------------------------------------------
21187 Extract indication and send it to UMAC
21188 -------------------------------------------------------------------------*/
21189
21190 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021192 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21193 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21194 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21195 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21196 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21197 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21198 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21199 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021200 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021202 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021204 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 pHalMicFailureInd->info.keyId;
21206 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21207 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21208 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21209 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021210
21211 if ( pWDICtx->wdiLowLevelIndCB )
21212 {
21213 /*Notify UMAC*/
21214 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21215 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021216
21217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021218}/*WDI_ProcessMicFailureInd*/
21219
21220
21221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021222 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 an indication of this kind is being received over the
21224 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021225
21226 @param pWDICtx: pointer to the WLAN DAL context
21227 pEventData: pointer to the event information structure
21228
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 @see
21230 @return Result of the function call
21231*/
21232WDI_Status
21233WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021234(
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 WDI_ControlBlockType* pWDICtx,
21236 WDI_EventInfoType* pEventData
21237)
21238{
21239 WDI_Status wdiStatus;
21240 eHalStatus halStatus;
21241 WDI_LowLevelIndType wdiInd;
21242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21243
21244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 -------------------------------------------------------------------------*/
21247 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21248 ( NULL == pEventData->pEventData))
21249 {
21250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021251 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021254 }
21255
21256 /*-------------------------------------------------------------------------
21257 Extract indication and send it to UMAC
21258 -------------------------------------------------------------------------*/
21259
21260 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21261 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021263
21264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21265 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021266
Jeff Johnson295189b2012-06-20 16:38:30 -070021267 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021268 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21269 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021270
ltimariub77f24b2013-01-24 18:54:33 -080021271 if ( pWDICtx->wdiLowLevelIndCB )
21272 {
21273 /*Notify UMAC*/
21274 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21275 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021276
21277 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021278}/*WDI_ProcessFatalErrorInd*/
21279
21280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021281 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021282 an indication of this kind is being received over the
21283 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021284
21285 @param pWDICtx: pointer to the WLAN DAL context
21286 pEventData: pointer to the event information structure
21287
Jeff Johnson295189b2012-06-20 16:38:30 -070021288 @see
21289 @return Result of the function call
21290*/
21291WDI_Status
21292WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021293(
Jeff Johnson295189b2012-06-20 16:38:30 -070021294 WDI_ControlBlockType* pWDICtx,
21295 WDI_EventInfoType* pEventData
21296)
21297{
21298 tDeleteStaContextParams halDelSTACtx;
21299 WDI_LowLevelIndType wdiInd;
21300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21301
21302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 -------------------------------------------------------------------------*/
21305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21306 ( NULL == pEventData->pEventData))
21307 {
21308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 }
21313
21314 /*-------------------------------------------------------------------------
21315 Extract indication and send it to UMAC
21316 -------------------------------------------------------------------------*/
21317
21318 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021319 wpalMemoryCopy( &halDelSTACtx,
21320 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 sizeof(halDelSTACtx));
21322
21323 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021324 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021325
21326 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21327 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21328 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21329 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21330
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21336 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021337
ltimariub77f24b2013-01-24 18:54:33 -080021338 if ( pWDICtx->wdiLowLevelIndCB )
21339 {
21340 /*Notify UMAC*/
21341 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21342 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021343
21344 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021345}/*WDI_ProcessDelSTAInd*/
21346
21347/**
21348*@brief Process Coex Indication function (called when
21349 an indication of this kind is being received over the
21350 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021351
21352 @param pWDICtx: pointer to the WLAN DAL context
21353 pEventData: pointer to the event information structure
21354
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 @see
21356 @return Result of the function call
21357*/
21358WDI_Status
21359WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021360(
Jeff Johnson295189b2012-06-20 16:38:30 -070021361 WDI_ControlBlockType* pWDICtx,
21362 WDI_EventInfoType* pEventData
21363)
21364{
21365 WDI_LowLevelIndType wdiInd;
21366 tCoexIndMsg halCoexIndMsg;
21367 wpt_uint32 index;
21368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21369
21370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021372 -------------------------------------------------------------------------*/
21373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21374 ( NULL == pEventData->pEventData ))
21375 {
21376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 }
21381
21382 /*-------------------------------------------------------------------------
21383 Extract indication and send it to UMAC
21384 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021385 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21386 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 sizeof(halCoexIndMsg.coexIndParams) );
21388
21389 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021390 wdiInd.wdiIndicationType = WDI_COEX_IND;
21391 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21393 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021394 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 }
21396
21397 // DEBUG
21398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21399 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21401 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21402 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21403 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21404 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021405
ltimariub77f24b2013-01-24 18:54:33 -080021406 if ( pWDICtx->wdiLowLevelIndCB )
21407 {
21408 /*Notify UMAC*/
21409 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21410 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021411
21412 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021413}/*WDI_ProcessCoexInd*/
21414
21415/**
21416*@brief Process Tx Complete Indication function (called when
21417 an indication of this kind is being received over the
21418 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021419
21420 @param pWDICtx: pointer to the WLAN DAL context
21421 pEventData: pointer to the event information structure
21422
Jeff Johnson295189b2012-06-20 16:38:30 -070021423 @see
21424 @return Result of the function call
21425*/
21426WDI_Status
21427WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021428(
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 WDI_ControlBlockType* pWDICtx,
21430 WDI_EventInfoType* pEventData
21431)
21432{
21433 WDI_LowLevelIndType wdiInd;
21434 tTxComplIndMsg halTxComplIndMsg;
21435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21436
21437 /*-------------------------------------------------------------------------
21438 Sanity check
21439 -------------------------------------------------------------------------*/
21440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21441 ( NULL == pEventData->pEventData ))
21442 {
21443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 WDI_ASSERT( 0 );
21446 return WDI_STATUS_E_FAILURE;
21447 }
21448
21449 /*-------------------------------------------------------------------------
21450 Extract indication and send it to UMAC
21451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21453 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 sizeof(halTxComplIndMsg.txComplParams) );
21455
21456 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021458
21459 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21460 &halTxComplIndMsg.txComplParams,
21461 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021462
ltimariub77f24b2013-01-24 18:54:33 -080021463 if ( pWDICtx->wdiLowLevelIndCB )
21464 {
21465 /*Notify UMAC*/
21466 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21467 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021468
21469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021470}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021471#ifdef FEATURE_WLAN_TDLS
21472/**
21473*@brief Process TDLS Indication function (called when
21474 an indication of this kind is being received over the
21475 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021476
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021477 @param pWDICtx: pointer to the WLAN DAL context
21478 pEventData: pointer to the event information structure
21479
21480 @see
21481 @return Result of the function call
21482*/
21483WDI_Status
21484WDI_ProcessTdlsInd
21485(
21486 WDI_ControlBlockType* pWDICtx,
21487 WDI_EventInfoType* pEventData
21488)
21489{
21490 WDI_LowLevelIndType wdiInd;
21491 tTdlsIndMsg halTdlsIndMsg;
21492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21493
21494 /*-------------------------------------------------------------------------
21495 Sanity check
21496 -------------------------------------------------------------------------*/
21497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21498 ( NULL == pEventData->pEventData ))
21499 {
21500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21501 "%s: Invalid parameters", __func__);
21502 WDI_ASSERT( 0 );
21503 return WDI_STATUS_E_FAILURE;
21504 }
21505
21506 /*-------------------------------------------------------------------------
21507 Extract indication and send it to UMAC
21508 -------------------------------------------------------------------------*/
21509 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21510 pEventData->pEventData,
21511 sizeof(halTdlsIndMsg.tdlsIndParams) );
21512
21513 /*Fill in the indication parameters*/
21514 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21515
21516 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21517 = halTdlsIndMsg.tdlsIndParams.status;
21518
21519 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21520 = halTdlsIndMsg.tdlsIndParams.staIdx;
21521
21522 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21523 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21524
Atul Mittalbb2aad02014-09-22 19:09:36 +053021525 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21526 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021527 /*Notify UMAC*/
21528 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21529
21530 return WDI_STATUS_SUCCESS;
21531}/*WDI_ProcessTdlsInd*/
21532#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021533/**
Viral Modid86bde22012-12-10 13:09:21 -080021534*@brief Process Noa Start Indication function (called when
21535 an indication of this kind is being received over the
21536 bus from HAL)
21537
21538 @param pWDICtx: pointer to the WLAN DAL context
21539 pEventData: pointer to the event information structure
21540
21541 @see
21542 @return Result of the function call
21543*/
21544WDI_Status
21545WDI_ProcessP2pNoaStartInd
21546(
21547 WDI_ControlBlockType* pWDICtx,
21548 WDI_EventInfoType* pEventData
21549)
21550{
21551 WDI_LowLevelIndType wdiInd;
21552 tNoaStartIndMsg halNoaStartIndMsg;
21553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21554
21555 /*-------------------------------------------------------------------------
21556 Sanity check
21557 -------------------------------------------------------------------------*/
21558 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21559 ( NULL == pEventData->pEventData ))
21560 {
21561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21562 "%s: Invalid parameters", __func__);
21563 WDI_ASSERT( 0 );
21564 return WDI_STATUS_E_FAILURE;
21565 }
21566
21567 /*-------------------------------------------------------------------------
21568 Extract indication and send it to UMAC
21569 -------------------------------------------------------------------------*/
21570 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21571 pEventData->pEventData,
21572 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21573
21574 /*Fill in the indication parameters*/
21575 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21576
21577 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21578 = halNoaStartIndMsg.noaStartIndParams.status;
21579
21580 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21581 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21582
21583 /*Notify UMAC*/
21584 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21585
21586 return WDI_STATUS_SUCCESS;
21587}/*WDI_ProcessNoaAttrInd*/
21588
21589/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021590*@brief Process Noa Attr Indication function (called when
21591 an indication of this kind is being received over the
21592 bus from HAL)
21593
21594 @param pWDICtx: pointer to the WLAN DAL context
21595 pEventData: pointer to the event information structure
21596
21597 @see
21598 @return Result of the function call
21599*/
21600WDI_Status
21601WDI_ProcessP2pNoaAttrInd
21602(
21603 WDI_ControlBlockType* pWDICtx,
21604 WDI_EventInfoType* pEventData
21605)
21606{
21607 WDI_LowLevelIndType wdiInd;
21608 tNoaAttrIndMsg halNoaAttrIndMsg;
21609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21610
21611 /*-------------------------------------------------------------------------
21612 Sanity check
21613 -------------------------------------------------------------------------*/
21614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21615 ( NULL == pEventData->pEventData ))
21616 {
21617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021619 WDI_ASSERT( 0 );
21620 return WDI_STATUS_E_FAILURE;
21621 }
21622
21623 /*-------------------------------------------------------------------------
21624 Extract indication and send it to UMAC
21625 -------------------------------------------------------------------------*/
21626 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21627 pEventData->pEventData,
21628 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21629
21630 /*Fill in the indication parameters*/
21631 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021632
Jeff Johnson295189b2012-06-20 16:38:30 -070021633 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21634 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021635
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21637 = halNoaAttrIndMsg.noaAttrIndParams.index;
21638 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21639 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21640 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21641 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021642
Jeff Johnson295189b2012-06-20 16:38:30 -070021643 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21644 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21645 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21646 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21647 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21648 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21649 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21650 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021651
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21653 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21654 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21655 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21656 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21657 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21658 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21659 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21660
ltimariub77f24b2013-01-24 18:54:33 -080021661 if ( pWDICtx->wdiLowLevelIndCB )
21662 {
21663 /*Notify UMAC*/
21664 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21665 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021666
21667 return WDI_STATUS_SUCCESS;
21668}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021669
21670/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021671 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021672 an indication of this kind is being received over the
21673 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021674
21675 @param pWDICtx: pointer to the WLAN DAL context
21676 pEventData: pointer to the event information structure
21677
Jeff Johnson295189b2012-06-20 16:38:30 -070021678 @see
21679 @return Result of the function call
21680*/
21681WDI_Status
21682WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021683(
Jeff Johnson295189b2012-06-20 16:38:30 -070021684 WDI_ControlBlockType* pWDICtx,
21685 WDI_EventInfoType* pEventData
21686)
21687{
21688 WDI_LowLevelIndType wdiInd;
21689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021690
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 /*-------------------------------------------------------------------------
21692 Extract indication and send it to UMAC
21693 -------------------------------------------------------------------------*/
21694 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21696
ltimariub77f24b2013-01-24 18:54:33 -080021697 if ( pWDICtx->wdiLowLevelIndCB )
21698 {
21699 /*Notify UMAC*/
21700 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21701 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021702
Jeff Johnsone7245742012-09-05 17:12:55 -070021703 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021704}/*WDI_ProcessTxPerHitInd*/
21705
Jeff Johnson295189b2012-06-20 16:38:30 -070021706/**
Yue Mab9c86f42013-08-14 15:59:08 -070021707 @brief Process Periodic Tx Pattern Fw Indication function
21708
21709 @param pWDICtx: pointer to the WLAN DAL context
21710 pEventData: pointer to the event information structure
21711
21712 @see
21713 @return Result of the function call
21714*/
21715WDI_Status
21716WDI_ProcessPeriodicTxPtrnFwInd
21717(
21718 WDI_ControlBlockType* pWDICtx,
21719 WDI_EventInfoType* pEventData
21720)
21721{
21722 WDI_LowLevelIndType wdiInd;
21723
21724 /*-------------------------------------------------------------------------
21725 Sanity check
21726 -------------------------------------------------------------------------*/
21727 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21728 (NULL == pEventData->pEventData))
21729 {
21730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21731 "%s: Invalid parameters", __func__);
21732 WDI_ASSERT(0);
21733 return WDI_STATUS_E_FAILURE;
21734 }
21735
21736 /*-------------------------------------------------------------------------
21737 Extract indication and send it to UMAC
21738 -------------------------------------------------------------------------*/
21739 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21740 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21741 sizeof(tHalPeriodicTxPtrnFwInd));
21742
21743 if (pWDICtx->wdiLowLevelIndCB)
21744 {
21745 /*Notify UMAC*/
21746 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21747 }
21748
21749 return WDI_STATUS_SUCCESS;
21750}
21751
21752/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 @brief WDI_ProcessFTMCommandReq
21754 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021755
21756 @param pWDICtx: pointer to the WLAN DAL context
21757 pEventData: pointer to the event information structure
21758
Jeff Johnson295189b2012-06-20 16:38:30 -070021759 @see
21760 @return Result of the function call
21761*/
21762WDI_Status
21763WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021764(
Jeff Johnson295189b2012-06-20 16:38:30 -070021765 WDI_ControlBlockType* pWDICtx,
21766 WDI_EventInfoType* pEventData
21767)
21768{
21769 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21770 wpt_uint8 *ftmCommandBuffer = NULL;
21771 wpt_uint16 dataOffset;
21772 wpt_uint16 bufferSize;
21773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021774 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 -------------------------------------------------------------------------*/
21776 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21777 ( NULL == pEventData->pEventData))
21778
21779 {
21780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 }
21785
21786 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21787
21788 /* Get MSG Buffer */
21789 WDI_GetMessageBuffer(pWDICtx,
21790 WDI_FTM_CMD_REQ,
21791 ftmCommandReq->bodyLength,
21792 &ftmCommandBuffer,
21793 &dataOffset,
21794 &bufferSize);
21795
21796 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21797 ftmCommandReq->FTMCommandBody,
21798 ftmCommandReq->bodyLength);
21799
21800 /* Send MSG */
21801 return WDI_SendMsg(pWDICtx,
21802 ftmCommandBuffer,
21803 bufferSize,
21804 pEventData->pCBfnc,
21805 pEventData->pUserData,
21806 WDI_FTM_CMD_RESP);
21807}
21808
21809/**
21810 @brief WDI_ProcessFTMCommandRsp
21811 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021812
21813 @param pWDICtx: pointer to the WLAN DAL context
21814 pEventData: pointer to the event information structure
21815
Jeff Johnson295189b2012-06-20 16:38:30 -070021816 @see
21817 @return Result of the function call
21818*/
21819WDI_Status
21820WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021821(
Jeff Johnson295189b2012-06-20 16:38:30 -070021822 WDI_ControlBlockType* pWDICtx,
21823 WDI_EventInfoType* pEventData
21824)
21825{
21826 WDI_FTMCommandRspCb ftmCMDRspCb;
21827 tProcessPttRspParams *ftmCMDRspData = NULL;
21828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21829
21830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021831 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021832 -------------------------------------------------------------------------*/
21833 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21834 ( NULL == pEventData->pEventData))
21835 {
21836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021837 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 }
21841
21842 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21843
21844 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21845
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21847 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21849
21850 /*Notify UMAC*/
21851 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21852
Jeff Johnsone7245742012-09-05 17:12:55 -070021853 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021854}
Jeff Johnson295189b2012-06-20 16:38:30 -070021855/**
21856 @brief WDI_ProcessHalDumpCmdReq
21857 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021858
21859 @param pWDICtx: pointer to the WLAN DAL context
21860 pEventData: pointer to the event information structure
21861
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 @see
21863 @return Result of the function call
21864*/
21865WDI_Status
21866WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021867(
Jeff Johnson295189b2012-06-20 16:38:30 -070021868 WDI_ControlBlockType* pWDICtx,
21869 WDI_EventInfoType* pEventData
21870)
21871{
21872 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21873 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21874 wpt_uint16 usDataOffset = 0;
21875 wpt_uint16 usSendSize = 0;
21876 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021877 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021878
21879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 -------------------------------------------------------------------------*/
21882 if (( NULL == pEventData ) ||
21883 ( NULL == pEventData->pEventData) ||
21884 ( NULL == pEventData->pCBfnc ))
21885 {
21886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021890 }
21891
21892 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21893 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21894
21895 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021896 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021897 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021898 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021899 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021900 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021902 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021904 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021906
Jeff Johnson295189b2012-06-20 16:38:30 -070021907 /*-----------------------------------------------------------------------
21908 Get message buffer
21909 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021911 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21912 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021913 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021914 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21915 {
21916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021917 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021918 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021921 }
21922
Jeff Johnsone7245742012-09-05 17:12:55 -070021923 wpalMemoryCopy( pSendBuffer+usDataOffset,
21924 &halDumpCmdReqMsg.dumpCmdReqParams,
21925 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021926
21927 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021929
21930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021931 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21934 wdiHALDumpCmdRspCb, pEventData->pUserData,
21935 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021936}
21937
21938/**
21939 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021940 Process hal Dump Command Response from HAL, simply route to HDD
21941
21942 @param pWDICtx: pointer to the WLAN DAL context
21943 pEventData: pointer to the event information structure
21944
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 @see
21946 @return Result of the function call
21947*/
21948WDI_Status
21949WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021950(
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 WDI_ControlBlockType* pWDICtx,
21952 WDI_EventInfoType* pEventData
21953)
21954{
21955 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021956 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21958
21959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 -------------------------------------------------------------------------*/
21962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21963 ( NULL == pEventData->pEventData))
21964 {
21965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 }
21970
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021972
21973 /*Initialize the WDI Response structure */
21974 wdiHALDumpCmdRsp.usBufferLen = 0;
21975 wdiHALDumpCmdRsp.pBuffer = NULL;
21976
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021977 wpalMemoryCopy( &halDumpCmdRspParams,
21978 pEventData->pEventData,
21979 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021980
21981 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021982 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021983
21984 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021985 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021986 {
21987 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021988 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21989 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21990
21991 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21992 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021993 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021995
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 /*Notify UMAC*/
21997 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21998
21999 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22000 {
22001 /* Free the allocated buffer */
22002 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22003 }
22004 return WDI_STATUS_SUCCESS;
22005}
22006
22007/*==========================================================================
22008 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022009
Jeff Johnson295189b2012-06-20 16:38:30 -070022010 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022012==========================================================================*/
22013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022014 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022015 when it wishes to send up a notification like the ones
22016 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022017
Jeff Johnson295189b2012-06-20 16:38:30 -070022018 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022019
22020 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022021 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022022 wctsNotifyCBData: the callback data of the user
22023
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022025
22026 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022027*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022028void
Jeff Johnson295189b2012-06-20 16:38:30 -070022029WDI_NotifyMsgCTSCB
22030(
Jeff Johnsone7245742012-09-05 17:12:55 -070022031 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 WCTS_NotifyEventType wctsEvent,
22033 void* wctsNotifyCBData
22034)
22035{
Jeff Johnsone7245742012-09-05 17:12:55 -070022036 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22038
22039 if (NULL == pWDICtx )
22040 {
22041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022044 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022045 }
22046
22047 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22048 {
22049 /* callback presumably occurred after close */
22050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022051 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022053 }
22054
22055 if ( WCTS_EVENT_OPEN == wctsEvent )
22056 {
22057 /*Flag must be set atomically as it is checked from incoming request
22058 functions*/
22059 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022060 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022061
22062 /*Nothing to do - so try to dequeue any pending request that may have
22063 occurred while we were trying to establish this*/
22064 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022065 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 {
22069 /*Flag must be set atomically as it is checked from incoming request
22070 functions*/
22071 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022072 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022073
22074 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022075 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 wpalMutexRelease(&pWDICtx->wptMutex);
22077
22078 /*Notify that the Control Channel is closed */
22079 wpalEventSet(&pWDICtx->wctsActionEvent);
22080 }
22081
22082}/*WDI_NotifyMsgCTSCB*/
22083
22084
22085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022086 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022087 when it wishes to send up a packet received over the
22088 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022089
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022091
22092 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022093 pMsg: the packet
22094 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 wctsRxMsgCBData: the callback data of the user
22096
Jeff Johnson295189b2012-06-20 16:38:30 -070022097 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022098
22099 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022100*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022101void
22102WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022103(
Jeff Johnsone7245742012-09-05 17:12:55 -070022104 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022105 void* pMsg,
22106 wpt_uint32 uLen,
22107 void* wctsRxMsgCBData
22108)
22109{
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 tHalMsgHeader *pHalMsgHeader;
22111 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22114
22115 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 ( uLen < sizeof(tHalMsgHeader)))
22120 {
22121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 }
22126
22127 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22128 {
22129 /* callback presumably occurred after close */
22130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022131 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 }
22134
Jeff Johnsone7245742012-09-05 17:12:55 -070022135 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022136 context - so no serialization is necessary here
22137 ! - revisit this assumption */
22138
22139 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22140
22141 if ( uLen != pHalMsgHeader->msgLen )
22142 {
22143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22144 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022145 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022146 wpalWlanReload();
22147
Jeff Johnsone7245742012-09-05 17:12:55 -070022148 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022149 }
22150
22151 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22152
22153 /*The message itself starts after the header*/
22154 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22155 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22156 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22157 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22158
22159
22160 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22161 {
22162 /*Stop the timer as the response was received */
22163 /*!UT - check for potential race conditions between stop and response */
22164 wpalTimerStop(&pWDICtx->wptResponseTimer);
22165 }
22166 /* Check if we receive a response message which is not expected */
22167 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22168 {
22169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22170 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22171 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22174 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022175
22176 if (gWDICb.bEnableSSR == false)
22177 {
22178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22179 "SSR is not enabled on WDI timeout");
22180 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22181 return;
22182 }
22183 wpalWcnssResetIntr();
22184 /* if this timer fires, it means Riva did not receive the FIQ */
22185 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22186
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 return;
22188 }
22189
22190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22191 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22192
22193 /*Post response event to the state machine*/
22194 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22195
22196}/*WDI_RXMsgCTSCB*/
22197
22198
22199/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022200 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022201========================================================================*/
22202
22203/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022206
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 @param pWDICtx - pointer to the control block
22208
22209 @return Result of the function call
22210*/
22211WPT_INLINE WDI_Status
22212WDI_CleanCB
22213(
22214 WDI_ControlBlockType* pWDICtx
22215)
22216{
22217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22218
22219 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022220 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022221
Jeff Johnsone7245742012-09-05 17:12:55 -070022222 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022223 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22224 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22225
22226 WDI_ResetAssocSessions( pWDICtx );
22227
22228 return WDI_STATUS_SUCCESS;
22229}/*WDI_CleanCB*/
22230
22231
22232/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022233 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022234
Jeff Johnsone7245742012-09-05 17:12:55 -070022235
22236 @param pWDICtx: pointer to the WLAN DAL context
22237 pEventData: pointer to the event information structure
22238
Jeff Johnson295189b2012-06-20 16:38:30 -070022239 @see
22240 @return Result of the function call
22241*/
22242WPT_INLINE WDI_Status
22243WDI_ProcessRequest
22244(
22245 WDI_ControlBlockType* pWDICtx,
22246 WDI_EventInfoType* pEventData
22247)
22248{
22249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22250
Jeff Johnsone7245742012-09-05 17:12:55 -070022251 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 already checked these pointers*/
22253
22254 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22255 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022258 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 WDI_getReqMsgString(pEventData->wdiRequest),
22260 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22261 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22262 }
22263 else
22264 {
22265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022266 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 pEventData->wdiRequest);
22268 return WDI_STATUS_E_NOT_IMPLEMENT;
22269 }
22270}/*WDI_ProcessRequest*/
22271
22272
22273/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022275 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022276 prefixes it with a send message header
22277
22278 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 wdiReqType: type of the request being sent
22280 uBufferLen: message buffer len
22281 pMsgBuffer: resulting allocated buffer
22282 pusDataOffset: offset in the buffer where the caller
22283 can start copying its message data
22284 puBufferSize: the resulting buffer size (offset+buff
22285 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022286
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 @see
22288 @return Result of the function call
22289*/
22290WDI_Status
22291WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022292(
22293 WDI_ControlBlockType* pWDICtx,
22294 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022295 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022296 wpt_uint8** pMsgBuffer,
22297 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 wpt_uint16* pusBufferSize
22299)
22300{
22301 tHalMsgHeader halMsgHeader;
22302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22303
Jeff Johnsone7245742012-09-05 17:12:55 -070022304 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 again*/
22306
22307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022308 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022309 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022310 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22312 if ( NULL == *pMsgBuffer )
22313 {
22314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22315 "Unable to allocate message buffer for req %s (%d)",
22316 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022317 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022320 }
22321
22322 /*-------------------------------------------------------------------------
22323 Fill in the message header
22324 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022325 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22326 /* Fill msgVersion */
22327#ifdef WLAN_FEATURE_11AC
22328 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022329 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022330 else
22331#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022332 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022333
Jeff Johnsone7245742012-09-05 17:12:55 -070022334 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22335 *pusDataOffset = sizeof(halMsgHeader);
22336 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22337
22338 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022339}/*WDI_GetMessageBuffer*/
22340
22341
22342/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022344 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 the CB
22346
22347 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022349
Jeff Johnson295189b2012-06-20 16:38:30 -070022350 usSendSize size of the buffer to be sent
22351 pRspCb: response callback - save in the WDI
22352 CB
22353 pUserData: user data associated with the
22354 callback
22355 wdiExpectedResponse: the code of the response that is
22356 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022357
Jeff Johnson295189b2012-06-20 16:38:30 -070022358 @see
22359 @return Result of the function call
22360*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022361WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022362WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022363(
22364 WDI_ControlBlockType* pWDICtx,
22365 wpt_uint8* pSendBuffer,
22366 wpt_uint32 usSendSize,
22367 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022368 void* pUserData,
22369 WDI_ResponseEnumType wdiExpectedResponse
22370)
22371{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022372 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022373 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22375
22376 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022377 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 ------------------------------------------------------------------------*/
22379 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022380 pWDICtx->pfncRspCB = pRspCb;
22381 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022382
22383 /*-----------------------------------------------------------------------
22384 Call the CTS to send this message over - free message afterwards
22385 - notify transport failure
22386 Note: CTS is reponsible for freeing the message buffer.
22387 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022388 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22389 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22390 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022393 "Failed to send message with expected response %s (%d)"
22394 " over the bus - catastrophic failure",
22395 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22396 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022397
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022398 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22399 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022400 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022401 else
22402 {
22403 /* even when message was placed in CTS deferred Q, we will treat it
22404 success but log this info
22405 */
22406 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22407 {
22408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22409 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22410 "response %s (%d)",
22411 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22412 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022413 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022414 }
22415 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022416
Jeff Johnsond13512a2012-07-17 11:42:19 -070022417 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 if ( NULL != pWDICtx->wdiReqStatusCB )
22419 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022420 /*Inform originator whether request went through or not*/
22421 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22422 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 pWDICtx->wdiReqStatusCB = NULL;
22424 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022425 callback(wdiStatus, callbackContext);
22426
22427 /*For WDI requests which have registered a request callback,
22428 inform the WDA caller of the same via setting the return value
22429 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22430 end up repeating the functonality in the req callback for the
22431 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022432 if (wdiStatus != WDI_STATUS_SUCCESS)
22433 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022434 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022435 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022436 }
22437
Jeff Johnsond13512a2012-07-17 11:42:19 -070022438 if ( wdiStatus == WDI_STATUS_SUCCESS )
22439 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 /*Start timer for the expected response */
22441 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022442
22443 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022444 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022445 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022446 }
22447 else
22448 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022449 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022450 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22451 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022452
Jeff Johnsond13512a2012-07-17 11:42:19 -070022453 return wdiStatus;
22454
Jeff Johnson295189b2012-06-20 16:38:30 -070022455}/*WDI_SendMsg*/
22456
22457
22458
22459/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022460 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022461 the bus using the control transport and saves some info
22462 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022463
22464 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 pSendBuffer: buffer to be sent
22466 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022467
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 @see
22469 @return Result of the function call
22470*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022472WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022473(
22474 WDI_ControlBlockType* pWDICtx,
22475 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 wpt_uint32 usSendSize
22477)
22478{
22479 wpt_uint32 uStatus ;
22480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22481
22482 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 Note: CTS is reponsible for freeing the message buffer.
22485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022486 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 (void*)pSendBuffer, usSendSize );
22488
22489 /*Inform Upper MAC about the outcome of the request*/
22490 if ( NULL != pWDICtx->wdiReqStatusCB )
22491 {
22492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22493 "Send indication status : %d", uStatus);
22494
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022495 /* even if CTS placed indication into its deferred Q, we treat it
22496 * as success and let CTS drain its queue as per smd interrupt to CTS
22497 */
22498 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 -070022499 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 }
22501
22502 /*If sending of the message failed - it is considered catastrophic and
22503 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022504 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22505 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22506
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 {
22508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022510
22511 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22512 return WDI_STATUS_E_FAILURE;
22513 }
22514
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516}/*WDI_SendIndication*/
22517
22518
22519/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 @brief WDI_DetectedDeviceError - called internally by DAL when
22521 it has detected a failure in the device
22522
22523 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022524 usErrorCode: error code detected by WDI or received
22525 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022526
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022528 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022529*/
22530void
22531WDI_DetectedDeviceError
22532(
22533 WDI_ControlBlockType* pWDICtx,
22534 wpt_uint16 usErrorCode
22535)
22536{
22537 WDI_LowLevelIndType wdiInd;
22538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22539
22540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22541 "Device Error detected code: %d - transitioning to stopped state",
22542 usErrorCode);
22543
Katya Nigamf02ad012014-05-05 16:12:49 +053022544 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22545
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 wpalMutexAcquire(&pWDICtx->wptMutex);
22547
22548 WDI_STATableStop(pWDICtx);
22549
22550 WDI_ResetAssocSessions(pWDICtx);
22551
22552 /*Set the expected state transition to stopped - because the device
22553 experienced a failure*/
22554 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22555
22556 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022557 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022558
Jeff Johnsone7245742012-09-05 17:12:55 -070022559 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022560
22561 /*TO DO: - there should be an attempt to reset the device here*/
22562
22563 wpalMutexRelease(&pWDICtx->wptMutex);
22564
22565 /*------------------------------------------------------------------------
22566 Notify UMAC if a handler is registered
22567 ------------------------------------------------------------------------*/
22568 if (pWDICtx->wdiLowLevelIndCB)
22569 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22571 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022572
22573 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22574 }
22575}/*WDI_DetectedDeviceError*/
22576
22577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022578 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022579 we started on send message has expire - this should
22580 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 reply - trigger catastrophic failure
22582 @param
22583
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022585
22586 @see
22587 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022588*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022589void
Jeff Johnson295189b2012-06-20 16:38:30 -070022590WDI_ResponseTimerCB
22591(
22592 void *pUserData
22593)
22594{
22595 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22597
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022598 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022603 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 }
22605
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022606 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022607 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022608 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022609
22610 /* If response timer is running at this time that means this timer
22611 * event is not for the last request but rather last-to-last request and
22612 * this timer event has come after we recevied respone for last-to-last
22613 * message
22614 */
22615 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22616 {
22617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22618 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022619 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022620 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22622 "uArchTimeStampTmrStart: %llu seconds, "
22623 "uArchTimeStampTmrExp: %llu seconds",
22624 pWDICtx->uArchTimeStampRspTmrStart,
22625 pWDICtx->uArchTimeStampRspTmrExp);
22626
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022627 return;
22628 }
22629
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022630 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 {
22632
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022635 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022636 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022637 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22638 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22640 "uArchTimeStampTmrStart: %llu seconds, "
22641 "uArchTimeStampTmrExp: %llu seconds",
22642 pWDICtx->uArchTimeStampRspTmrStart,
22643 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022644
22645 /* WDI timeout means Riva is not responding or SMD communication to Riva
22646 * is not happening. The only possible way to recover from this error
22647 * is to initiate SSR from APPS.
22648 * There is also an option to re-enable wifi, which will eventually
22649 * trigger SSR
22650 */
22651 if (gWDICb.bEnableSSR == false)
22652 {
22653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22654 "SSR is not enabled on WDI timeout");
22655 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22656 return;
22657 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022658#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022659 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022660 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022661 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022662 if(wpalIsSsrPanicOnFailure())
22663 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022664 } else {
22665 /* if this timer fires, it means Riva did not receive the FIQ */
22666 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022667 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022668#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022669 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22670 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022671#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 }
22673 else
22674 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022676 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022677 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022678 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22679 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22681 "uArchTimeStampTmrStart: %llu seconds, "
22682 "uArchTimeStampTmrExp: %llu seconds",
22683 pWDICtx->uArchTimeStampRspTmrStart,
22684 pWDICtx->uArchTimeStampRspTmrExp);
22685
Jeff Johnson295189b2012-06-20 16:38:30 -070022686 }
22687
22688 return;
22689
22690}/*WDI_ResponseTimerCB*/
22691
22692
22693/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022694 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022695
Jeff Johnsone7245742012-09-05 17:12:55 -070022696
22697 @param pWDICtx: pointer to the WLAN DAL context
22698 pEventData: pointer to the event information structure
22699
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 @see
22701 @return Result of the function call
22702*/
22703WPT_INLINE WDI_Status
22704WDI_ProcessResponse
22705(
22706 WDI_ControlBlockType* pWDICtx,
22707 WDI_EventInfoType* pEventData
22708)
22709{
22710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22711
Jeff Johnsone7245742012-09-05 17:12:55 -070022712 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 already checked these pointers
22714 ! - revisit this assumption */
22715 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22716 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022717 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022719 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022720 WDI_getRespMsgString(pEventData->wdiResponse),
22721 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22722 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22723 }
22724 else
22725 {
22726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022727 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022728 pEventData->wdiResponse);
22729 return WDI_STATUS_E_NOT_IMPLEMENT;
22730 }
22731}/*WDI_ProcessResponse*/
22732
22733
22734/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022735 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022736=========================================================================*/
22737
22738/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022739 @brief Utility function used by the DAL Core to help queue a
22740 request that cannot be processed right away.
22741 @param
22742
Jeff Johnson295189b2012-06-20 16:38:30 -070022743 pWDICtx: - pointer to the WDI control block
22744 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022745 queued
22746
22747 @see
22748 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022749*/
22750WDI_Status
22751WDI_QueuePendingReq
22752(
22753 WDI_ControlBlockType* pWDICtx,
22754 WDI_EventInfoType* pEventData
22755)
22756{
Jeff Johnsone7245742012-09-05 17:12:55 -070022757 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22761
22762 if ( NULL == pEventDataQueue )
22763 {
22764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022765 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 WDI_ASSERT(0);
22767 return WDI_STATUS_MEM_FAILURE;
22768 }
22769
22770 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22771 pEventDataQueue->pUserData = pEventData->pUserData;
22772 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22773 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022774 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022775
22776 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22777 {
22778 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022779
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 if ( NULL == pEventInfo )
22781 {
22782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 WDI_ASSERT(0);
22785 wpalMemoryFree(pEventDataQueue);
22786 return WDI_STATUS_MEM_FAILURE;
22787 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022788
Jeff Johnson295189b2012-06-20 16:38:30 -070022789 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22790
22791 }
22792 pEventDataQueue->pEventData = pEventInfo;
22793
22794 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022795 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022796
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022797 if (eWLAN_PAL_STATUS_E_FAILURE ==
22798 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22799 {
22800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22801 "pEventDataQueue wpal_list_insert_back failed");
22802 WDI_ASSERT(0);
22803 wpalMemoryFree(pEventDataQueue);
22804 wpalMemoryFree(pEventInfo);
22805 return WDI_STATUS_MEM_FAILURE;
22806 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022807
22808 return WDI_STATUS_SUCCESS;
22809}/*WDI_QueuePendingReq*/
22810
22811/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022812 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022813 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022814 @param
22815
22816 pMsg - pointer to the message
22817
22818 @see
22819 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022820*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022821void
Jeff Johnson295189b2012-06-20 16:38:30 -070022822WDI_PALCtrlMsgCB
22823(
22824 wpt_msg *pMsg
22825)
22826{
22827 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 WDI_ControlBlockType* pWDICtx = NULL;
22829 WDI_Status wdiStatus;
22830 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 void* pUserData;
22832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22833
22834 if (( NULL == pMsg )||
22835 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22836 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22837 {
22838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022839 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022841 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022842 }
22843
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022844 /*Access to the global state must be locked */
22845 wpalMutexAcquire(&pWDICtx->wptMutex);
22846
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 /*Transition back to the state that we had before serialization
22848 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022849 */
Jeff Johnsone7245742012-09-05 17:12:55 -070022850 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022851 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022852
22853 /*-----------------------------------------------------------------------
22854 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022855 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022856 -----------------------------------------------------------------------*/
22857 switch ( pEventData->wdiRequest )
22858 {
22859
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022861 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22862 break;
22863
Jeff Johnson295189b2012-06-20 16:38:30 -070022864 case WDI_NV_DOWNLOAD_REQ:
22865 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22866 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22867 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22868 {
22869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022870 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22872 }
22873 else
22874 {
22875 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22876 }
22877
22878 break;
22879
22880 default:
22881 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22882 break;
22883 }/*switch ( pEventData->wdiRequest )*/
22884
22885 if ( WDI_STATUS_SUCCESS != wdiStatus )
22886 {
22887 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22888
22889 if ( NULL != pfnReqStatusCB )
22890 {
22891 /*Fail the request*/
22892 pfnReqStatusCB( wdiStatus, pUserData);
22893 }
22894 }
22895
22896 /* Free data - that was allocated when queueing*/
22897 if( pEventData != NULL )
22898 {
22899 if( pEventData->pEventData != NULL )
22900 {
22901 wpalMemoryFree(pEventData->pEventData);
22902 }
22903 wpalMemoryFree(pEventData);
22904 }
22905
22906 if( pMsg != NULL )
22907 {
22908 wpalMemoryFree(pMsg);
22909 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022910
Jeff Johnson295189b2012-06-20 16:38:30 -070022911}/*WDI_PALCtrlMsgCB*/
22912
22913/**
22914 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022915 and schedule for execution a pending request
22916 @param
22917
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 pWDICtx: - pointer to the WDI control block
22919 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022920 queued
22921
22922 @see
22923 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022924*/
22925WDI_Status
22926WDI_DequeuePendingReq
22927(
22928 WDI_ControlBlockType* pWDICtx
22929)
22930{
Jeff Johnsone7245742012-09-05 17:12:55 -070022931 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022932 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022933 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22935
Jeff Johnsone7245742012-09-05 17:12:55 -070022936 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022937
22938 if ( NULL == pNode )
22939 {
22940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022941 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022942 return WDI_STATUS_SUCCESS;
22943 }
22944
22945 /*The node actually points to the 1st element inside the Event Data struct -
22946 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022947 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022948
22949 /*Serialize processing in the control thread
22950 !TO DO: - check to see if these are all the messages params that need
22951 to be filled in*/
22952 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22953
22954 if ( NULL == palMsg )
22955 {
22956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022957 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022959 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022960 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022961 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022962 palMsg->callback = WDI_PALCtrlMsgCB;
22963 palMsg->ptr = pEventData;
22964
22965 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022966 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022967 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022968
Jeff Johnson295189b2012-06-20 16:38:30 -070022969 /*Transition back to BUSY as we need to handle a queued request*/
22970 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022971
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22973
22974 return WDI_STATUS_PENDING;
22975}/*WDI_DequeuePendingReq*/
22976
22977
22978/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022979 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022981 away.- The assoc requests will be queued by BSSID
22982 @param
22983
Jeff Johnson295189b2012-06-20 16:38:30 -070022984 pWDICtx: - pointer to the WDI control block
22985 pEventData: pointer to the evnt info that needs to be queued
22986 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022987
22988 @see
22989 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022990*/
22991WDI_Status
22992WDI_QueueNewAssocRequest
22993(
22994 WDI_ControlBlockType* pWDICtx,
22995 WDI_EventInfoType* pEventData,
22996 wpt_macAddr macBSSID
22997)
22998{
Jeff Johnsone7245742012-09-05 17:12:55 -070022999 wpt_uint8 i;
23000 WDI_BSSSessionType* pSession = NULL;
23001 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023002 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023003 void* pEventInfo;
23004 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023006
Jeff Johnsone7245742012-09-05 17:12:55 -070023007
23008 /*------------------------------------------------------------------------
23009 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023010 ------------------------------------------------------------------------*/
23011 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23012 {
23013 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23014 {
23015 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023016 pSession = &pWDICtx->aBSSSessions[i];
23017 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023018 }
23019 }
23020
23021 if ( i >= WDI_MAX_BSS_SESSIONS )
23022 {
23023 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023025 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023026
Jeff Johnson295189b2012-06-20 16:38:30 -070023027 /*------------------------------------------------------------------------
23028 Fill in the BSSID for this session and set the usage flag
23029 ------------------------------------------------------------------------*/
23030 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023031 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023032
23033 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 ------------------------------------------------------------------------*/
23036 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23037 if ( NULL == pEventDataQueue )
23038 {
23039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023040 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023041 WDI_ASSERT(0);
23042 return WDI_STATUS_MEM_FAILURE;
23043 }
23044
23045 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23046 if ( NULL == pSessionIdElement )
23047 {
23048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023049 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 WDI_ASSERT(0);
23051 wpalMemoryFree(pEventDataQueue);
23052 return WDI_STATUS_MEM_FAILURE;
23053 }
23054
23055 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23056 if ( NULL == pEventInfo )
23057 {
23058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023059 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023060 WDI_ASSERT(0);
23061 wpalMemoryFree(pSessionIdElement);
23062 wpalMemoryFree(pEventDataQueue);
23063 return WDI_STATUS_MEM_FAILURE;
23064 }
23065
23066 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23067 pEventDataQueue->pUserData = pEventData->pUserData;
23068 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23069 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023070 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023071
23072 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23073 pEventDataQueue->pEventData = pEventInfo;
23074
23075 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023076 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023077
23078 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023079 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023080
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023081 if (eWLAN_PAL_STATUS_E_FAILURE ==
23082 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23083 {
23084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23085 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23086 WDI_ASSERT(0);
23087 wpalMemoryFree(pSessionIdElement);
23088 wpalMemoryFree(pEventDataQueue);
23089 wpalMemoryFree(pEventInfo);
23090 return WDI_STATUS_MEM_FAILURE;
23091 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023092
23093 /*We need to maintain a separate list that keeps track of the order in which
23094 the new assoc requests are being queued such that we can start processing
23095 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023096 pSessionIdElement->ucIndex = i;
23097 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023098
23099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23100 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023101 if (eWLAN_PAL_STATUS_E_FAILURE ==
23102 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23103 {
23104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23105 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23106 WDI_ASSERT(0);
23107 wpalMemoryFree(pSessionIdElement);
23108 wpalMemoryFree(pEventDataQueue);
23109 wpalMemoryFree(pEventInfo);
23110 return WDI_STATUS_MEM_FAILURE;
23111 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023112
23113 /*Return pending as this is what the status of the request is since it has
23114 been queued*/
23115 return WDI_STATUS_PENDING;
23116}/*WDI_QueueNewAssocRequest*/
23117
23118/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023119 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023121 away.- The assoc requests will be queued by BSSID
23122 @param
23123
Jeff Johnson295189b2012-06-20 16:38:30 -070023124 pWDICtx: - pointer to the WDI control block
23125 pSession: - session in which to queue
23126 pEventData: pointer to the event info that needs to be
23127 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023128
23129 @see
23130 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023131*/
23132WDI_Status
23133WDI_QueueAssocRequest
23134(
23135 WDI_ControlBlockType* pWDICtx,
23136 WDI_BSSSessionType* pSession,
23137 WDI_EventInfoType* pEventData
23138)
23139{
Jeff Johnsone7245742012-09-05 17:12:55 -070023140 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023141 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023142 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023144
23145 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023146 Sanity check
23147 ------------------------------------------------------------------------*/
23148 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23149 {
23150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023152
Jeff Johnsone7245742012-09-05 17:12:55 -070023153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023154 }
23155
23156 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023157 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023158 ------------------------------------------------------------------------*/
23159 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23160 if ( NULL == pEventDataQueue )
23161 {
23162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023163 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 WDI_ASSERT(0);
23165 return WDI_STATUS_MEM_FAILURE;
23166 }
23167
23168 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23169 if ( NULL == pEventInfo )
23170 {
23171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23172 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023173 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 WDI_ASSERT(0);
23175 wpalMemoryFree(pEventDataQueue);
23176 return WDI_STATUS_MEM_FAILURE;
23177 }
23178
23179 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23180 pEventDataQueue->pUserData = pEventData->pUserData;
23181 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23182 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023183 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023184 pEventDataQueue->pEventData = pEventInfo;
23185
23186 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23187
23188 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023189 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023190
23191 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023192 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023193
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023194 if (eWLAN_PAL_STATUS_E_FAILURE ==
23195 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23196 {
23197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23198 "%s: Cannot allocate memory for queueing event data info",
23199 __func__);
23200 WDI_ASSERT(0);
23201 wpalMemoryFree(pEventDataQueue);
23202 wpalMemoryFree(pEventInfo);
23203 return WDI_STATUS_MEM_FAILURE;
23204 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023205
23206 /*The result of this operation is pending because the request has been
23207 queued and it will be processed at a later moment in time */
23208 return WDI_STATUS_PENDING;
23209}/*WDI_QueueAssocRequest*/
23210
23211/**
23212 @brief Utility function used by the DAL Core to help dequeue
23213 an association request that was pending
23214 The request will be queued up in front of the main
23215 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023216 @param
23217
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023219
23220
23221 @see
23222 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023223*/
23224WDI_Status
23225WDI_DequeueAssocRequest
23226(
23227 WDI_ControlBlockType* pWDICtx
23228)
23229{
Jeff Johnsone7245742012-09-05 17:12:55 -070023230 wpt_list_node* pNode = NULL;
23231 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 WDI_BSSSessionType* pSession;
23233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023234
23235 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 Sanity check
23237 ------------------------------------------------------------------------*/
23238 if ( NULL == pWDICtx )
23239 {
23240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023242
Jeff Johnsone7245742012-09-05 17:12:55 -070023243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 }
23245
23246 /*------------------------------------------------------------------------
23247 An association has been completed => a new association can occur
23248 Check to see if there are any pending associations ->
23249 If so , transfer all the pending requests into the busy queue for
23250 processing
23251 These requests have arrived prior to the requests in the busy queue
23252 (bc they needed to be processed in order to be placed in this queue)
23253 => they will be placed at the front of the busy queue
23254 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023255 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023256
23257 if ( NULL == pNode )
23258 {
23259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023261 return WDI_STATUS_SUCCESS;
23262 }
23263
23264 /*The node actually points to the 1st element inside the Session Id struct -
23265 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023267
23268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23269 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23270
23271 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23272 {
23273 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023274
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023276 the front of the main waiting queue for subsequent execution*/
23277 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023278 while ( NULL != pNode )
23279 {
23280 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023281 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23282 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023283 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023284 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023285 }
23286 else
23287 {
23288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023289 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023290 WPAL_ASSERT(0);
23291 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023294
Jeff Johnson295189b2012-06-20 16:38:30 -070023295 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23296 wpalMemoryFree(pSessionIdElement);
23297 return WDI_STATUS_SUCCESS;
23298}/*WDI_DequeueAssocRequest*/
23299
23300/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023301 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 pending requests - all req cb will be called with
23303 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 @param
23305
Jeff Johnson295189b2012-06-20 16:38:30 -070023306 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023307
23308 @see
23309 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023310*/
23311WDI_Status
23312WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023313(
Jeff Johnson295189b2012-06-20 16:38:30 -070023314 WDI_ControlBlockType* pWDICtx
23315)
23316{
Jeff Johnsone7245742012-09-05 17:12:55 -070023317 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023318 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 void* pUserData;
23321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23322
Jeff Johnsone7245742012-09-05 17:12:55 -070023323 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023324
23325 /*------------------------------------------------------------------------
23326 Go through all the requests and fail them - this will only be called
23327 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023328 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023329 ------------------------------------------------------------------------*/
23330 while( pNode )
23331 {
23332 /*The node actually points to the 1st element inside the Event Data struct -
23333 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023334 pEventDataQueue = (WDI_EventInfoType*)pNode;
23335
Jeff Johnson295189b2012-06-20 16:38:30 -070023336 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23337 if ( NULL != pfnReqStatusCB )
23338 {
23339 /*Fail the request*/
23340 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23341 }
23342 /* Free data - that was allocated when queueing */
23343 if ( pEventDataQueue->pEventData != NULL )
23344 {
23345 wpalMemoryFree(pEventDataQueue->pEventData);
23346 }
23347 wpalMemoryFree(pEventDataQueue);
23348
23349 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23350 {
23351 break;
23352 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 }
23354
Jeff Johnson295189b2012-06-20 16:38:30 -070023355 return WDI_STATUS_SUCCESS;
23356}/*WDI_ClearPendingRequests*/
23357
23358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 @brief Helper routine used to init the BSS Sessions in the WDI control block
23360
23361
23362 @param pWDICtx: pointer to the WLAN DAL context
23363
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 @see
23365*/
23366void
23367WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023368(
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 WDI_ControlBlockType* pWDICtx
23370)
23371{
Jeff Johnsone7245742012-09-05 17:12:55 -070023372 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23374
23375 /*-------------------------------------------------------------------------
23376 No Sanity check
23377 -------------------------------------------------------------------------*/
23378 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23379 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023380 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023381 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23382 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23383 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23384 }
23385}/*WDI_ResetAssocSessions*/
23386
23387/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 @brief Helper routine used to find a session based on the BSSID
23389
23390
23391 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023392 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023393 pSession: pointer to the session (if found)
23394
Jeff Johnson295189b2012-06-20 16:38:30 -070023395 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023396 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023397*/
23398wpt_uint8
23399WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023400(
Jeff Johnson295189b2012-06-20 16:38:30 -070023401 WDI_ControlBlockType* pWDICtx,
23402 wpt_macAddr macBSSID,
23403 WDI_BSSSessionType** ppSession
23404)
23405{
Jeff Johnsone7245742012-09-05 17:12:55 -070023406 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23408
23409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 -------------------------------------------------------------------------*/
23412 if ( NULL == ppSession )
23413 {
23414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023415 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023416 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023417 }
23418
Jeff Johnsone7245742012-09-05 17:12:55 -070023419 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023420
Jeff Johnsone7245742012-09-05 17:12:55 -070023421 /*------------------------------------------------------------------------
23422 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023423 ------------------------------------------------------------------------*/
23424 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23425 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023426 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23427 (eWLAN_PAL_TRUE ==
23428 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23429 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023430 {
23431 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023432 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 return i;
23434 }
23435 }
23436
Jeff Johnsone7245742012-09-05 17:12:55 -070023437 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023438}/*WDI_FindAssocSession*/
23439
23440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023441 @brief Helper routine used to find a session based on the BSSID
23442
23443
23444 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023445 ucBSSIdx: BSS Index of the session
23446 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023447
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023449 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023450*/
23451wpt_uint8
23452WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023453(
Jeff Johnson295189b2012-06-20 16:38:30 -070023454 WDI_ControlBlockType* pWDICtx,
23455 wpt_uint16 ucBSSIdx,
23456 WDI_BSSSessionType** ppSession
23457)
23458{
Jeff Johnsone7245742012-09-05 17:12:55 -070023459 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23461
23462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023464 -------------------------------------------------------------------------*/
23465 if ( NULL == ppSession )
23466 {
23467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023468 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023469 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 }
23471
Jeff Johnsone7245742012-09-05 17:12:55 -070023472 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023473
Jeff Johnsone7245742012-09-05 17:12:55 -070023474 /*------------------------------------------------------------------------
23475 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 ------------------------------------------------------------------------*/
23477 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23478 {
23479 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23480 {
23481 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023482 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023483 return i;
23484 }
23485 }
23486
Jeff Johnsone7245742012-09-05 17:12:55 -070023487 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023488}/*WDI_FindAssocSessionByBSSIdx*/
23489
23490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023491 @brief Helper routine used to find a session based on the BSSID
23492
23493
23494 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023495 ucBSSIdx: BSS Index of the session
23496 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023497
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023499 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023500*/
23501wpt_uint8
23502WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023503(
Jeff Johnson295189b2012-06-20 16:38:30 -070023504 WDI_ControlBlockType* pWDICtx,
23505 wpt_uint16 usIdx,
23506 WDI_BSSSessionType** ppSession
23507)
23508{
23509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23510
23511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023513 -------------------------------------------------------------------------*/
23514 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23515 {
23516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023517 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023518 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023519 }
23520
23521 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023522 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023523
23524 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023525
Jeff Johnson295189b2012-06-20 16:38:30 -070023526}/*WDI_FindAssocSessionByBSSIdx*/
23527
23528/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023529 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023530 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023531
23532
23533 @param pWDICtx: pointer to the WLAN DAL context
23534 pSession: pointer to the session (if found)
23535
Jeff Johnson295189b2012-06-20 16:38:30 -070023536 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023537 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023538*/
23539wpt_uint8
23540WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023541(
Jeff Johnson295189b2012-06-20 16:38:30 -070023542 WDI_ControlBlockType* pWDICtx,
23543 WDI_BSSSessionType** ppSession
23544)
23545{
Jeff Johnsone7245742012-09-05 17:12:55 -070023546 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023550 -------------------------------------------------------------------------*/
23551 if ( NULL == ppSession )
23552 {
23553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023554 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023555 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023556 }
23557
Jeff Johnsone7245742012-09-05 17:12:55 -070023558 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023559
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 /*------------------------------------------------------------------------
23561 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023562 ------------------------------------------------------------------------*/
23563 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23564 {
23565 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23566 {
23567 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 return i;
23570 }
23571 }
23572
Jeff Johnsone7245742012-09-05 17:12:55 -070023573 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023574}/*WDI_FindEmptySession*/
23575
23576
23577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023578 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023580
23581
23582 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023583 macBSSID: pointer to BSSID. If NULL, get all the session.
23584 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23585 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23586 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 @see
23588 @return Number of sessions in use
23589*/
23590wpt_uint8
23591WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023592(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023593 WDI_ControlBlockType* pWDICtx,
23594 wpt_macAddr macBSSID,
23595 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023596)
23597{
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023600
23601 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023602 Count all sessions in use
23603 ------------------------------------------------------------------------*/
23604 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23605 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023606 if ( macBSSID && skipBSSID &&
23607 (eWLAN_PAL_TRUE ==
23608 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23609 WDI_MAC_ADDR_LEN)))
23610 {
23611 continue;
23612 }
23613 else if ( pWDICtx->aBSSSessions[i].bInUse )
23614 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023615 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023616 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023617 }
23618
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023620}/*WDI_GetActiveSessionsCount*/
23621
23622/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023623 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023624 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023625
23626
23627 @param pWDICtx: pointer to the WLAN DAL context
23628 pSession: pointer to the session (if found)
23629
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023631 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023632*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023633void
Jeff Johnson295189b2012-06-20 16:38:30 -070023634WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023635(
Jeff Johnson295189b2012-06-20 16:38:30 -070023636 WDI_ControlBlockType* pWDICtx,
23637 WDI_BSSSessionType* ppSession
23638)
23639{
23640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023642 -------------------------------------------------------------------------*/
23643 if ( NULL == ppSession )
23644 {
23645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023646 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023647 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 }
23649
Jeff Johnsone7245742012-09-05 17:12:55 -070023650 /*------------------------------------------------------------------------
23651 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023652 ------------------------------------------------------------------------*/
23653 wpal_list_destroy(&ppSession->wptPendingQueue);
23654 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023655 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23656 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23658 wpal_list_init(&ppSession->wptPendingQueue);
23659
23660}/*WDI_DeleteSession*/
23661
23662/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023663 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023664 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023665 @param
23666
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 WDI_AddStaParams: - pointer to the WDI Add STA params
23668 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023669
23670 @see
23671 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023672*/
23673void
23674WDI_AddBcastSTAtoSTATable
23675(
23676 WDI_ControlBlockType* pWDICtx,
23677 WDI_AddStaParams * staParams,
23678 wpt_uint16 usBcastStaIdx
23679)
23680{
23681 WDI_AddStaParams wdiAddSTAParam = {0};
23682 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23684
23685 /*---------------------------------------------------------------------
23686 Sanity check
23687 ---------------------------------------------------------------------*/
23688 if ( NULL == staParams )
23689 {
23690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023692
Jeff Johnsone7245742012-09-05 17:12:55 -070023693 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023694 }
23695
23696 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23697 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23698 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23699 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23700 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23701 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23702 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23703 WDI_MAC_ADDR_LEN );
23704 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23705 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23706 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23707 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23708 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23709 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23710 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023711
Jeff Johnson295189b2012-06-20 16:38:30 -070023712 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23713}
23714
23715/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023716 @brief NV blob will be divided into fragments of size 4kb and
23717 Sent to HAL
23718
23719 @param pWDICtx: pointer to the WLAN DAL context
23720 pEventData: pointer to the event information structure
23721
Jeff Johnson295189b2012-06-20 16:38:30 -070023722 @see
23723 @return Result of the function call
23724 */
23725
23726WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023727(
Jeff Johnson295189b2012-06-20 16:38:30 -070023728 WDI_ControlBlockType* pWDICtx,
23729 WDI_EventInfoType* pEventData
23730)
23731{
23732
23733 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23734 wpt_uint8* pSendBuffer = NULL;
23735 wpt_uint16 usDataOffset = 0;
23736 wpt_uint16 usSendSize = 0;
23737 wpt_uint16 usCurrentFragmentSize =0;
23738 wpt_uint8* pSrcBuffer = NULL;
23739 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23740 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23741
23742 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23743 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23744 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23745
Jeff Johnsone7245742012-09-05 17:12:55 -070023746 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23748
23749 /* Update the current Fragment Number */
23750 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23751
23752 /*Update the HAL REQ structure */
23753 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23754 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23755 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23756
23757 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023758 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023759 image will be sent to HAL*/
23760
Jeff Johnsone7245742012-09-05 17:12:55 -070023761 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023763 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023764 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023766 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23767 usCurrentFragmentSize = FRAGMENT_SIZE;
23768
23769 /*Update the HAL REQ structure */
23770 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23771 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23772
23773 }
23774 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023775 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 usCurrentFragmentSize = FRAGMENT_SIZE;
23777
23778 /*Update the HAL REQ structure */
23779 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23780 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23781 }
23782
23783 /*-----------------------------------------------------------------------
23784 Get message buffer
23785 -----------------------------------------------------------------------*/
23786 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23787 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23788 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023789 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023790 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23791 {
23792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023793 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023794 pEventData, pwdiNvDownloadReqParams);
23795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 }
23798
23799 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023800 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023801 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23802
23803 /* Appending the NV image fragment */
23804 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23805 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23806 usCurrentFragmentSize);
23807
23808 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023809 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023810
Jeff Johnsone7245742012-09-05 17:12:55 -070023811 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23812 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023813 WDI_NV_DOWNLOAD_RESP);
23814
23815}
Jeff Johnsone7245742012-09-05 17:12:55 -070023816/*============================================================================
23817 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023818 ============================================================================*/
23819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 @brief Helper routine used to find a session based on the BSSID
23821 @param pContext: pointer to the WLAN DAL context
23822 @param pDPContext: pointer to the Datapath context
23823
Jeff Johnson295189b2012-06-20 16:38:30 -070023824 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023825 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023826*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023827WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023828WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23829{
23830 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23831
23832 pCB->pDPContext = pDPContext;
23833 return;
23834}
23835
23836/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023837 @brief Helper routine used to find a session based on the BSSID
23838
23839
23840 @param pContext: pointer to the WLAN DAL context
23841
Jeff Johnson295189b2012-06-20 16:38:30 -070023842 @see
23843 @return pointer to Datapath context
23844*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023845WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023846WDI_DS_GetDatapathContext (void *pContext)
23847{
23848 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23849 return pCB->pDPContext;
23850}
23851/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023852 @brief Helper routine used to find a session based on the BSSID
23853
23854
23855 @param pContext: pointer to the WLAN DAL context
23856 @param pDTDriverContext: pointer to the Transport Driver context
23857
Jeff Johnson295189b2012-06-20 16:38:30 -070023858 @see
23859 @return void
23860*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023861WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023862WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23863{
23864 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23865
23866 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023867 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023868}
23869
23870/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023871 @brief Helper routine used to find a session based on the BSSID
23872
23873
23874 @param pWDICtx: pointer to the WLAN DAL context
23875
Jeff Johnson295189b2012-06-20 16:38:30 -070023876 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023877 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023878*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023879WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023880WDT_GetTransportDriverContext (void *pContext)
23881{
23882 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023883 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023884}
23885
Jeff Johnsone7245742012-09-05 17:12:55 -070023886/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 Helper inline converters
23888 ============================================================================*/
23889/*Convert WDI driver type into HAL driver type*/
23890WPT_STATIC WPT_INLINE WDI_Status
23891WDI_HAL_2_WDI_STATUS
23892(
23893 eHalStatus halStatus
23894)
23895{
Jeff Johnsone7245742012-09-05 17:12:55 -070023896 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023897 the chances of getting inlined*/
23898 switch( halStatus )
23899 {
23900 case eHAL_STATUS_SUCCESS:
23901 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23902 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23903 return WDI_STATUS_SUCCESS;
23904 case eHAL_STATUS_FAILURE:
23905 return WDI_STATUS_E_FAILURE;
23906 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 return WDI_STATUS_MEM_FAILURE;
23908 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023909 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023910 default:
23911 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23912 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023913
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023915}/*WDI_HAL_2_WDI_STATUS*/
23916
23917/*Convert WDI request type into HAL request type*/
23918WPT_STATIC WPT_INLINE tHalHostMsgType
23919WDI_2_HAL_REQ_TYPE
23920(
23921 WDI_RequestEnumType wdiReqType
23922)
23923{
Jeff Johnsone7245742012-09-05 17:12:55 -070023924 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023925 the chances of getting inlined*/
23926 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023927 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023928 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023929 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023936 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023943 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023944 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023945 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023946 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023948 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023949 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023950 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023951 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023954 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023957 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023959 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023961 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023962 return WLAN_HAL_RMV_STAKEY_REQ;
23963 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023964 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023965 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023968 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023969 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023970 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023971 case WDI_DEL_BA_REQ:
23972 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023973#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 case WDI_TSM_STATS_REQ:
23975 return WLAN_HAL_TSM_STATS_REQ;
23976#endif
23977 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023978 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023979 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023980 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023982 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023984 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023985 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023986 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023987 case WDI_ADD_BA_SESSION_REQ:
23988 return WLAN_HAL_ADD_BA_SESSION_REQ;
23989 case WDI_TRIGGER_BA_REQ:
23990 return WLAN_HAL_TRIGGER_BA_REQ;
23991 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023992 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023993 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23996 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23997 case WDI_SET_MAX_TX_POWER_REQ:
23998 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023999 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24000 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024001 case WDI_SET_TX_POWER_REQ:
24002 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024003 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24004 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024005#ifdef FEATURE_WLAN_TDLS
24006 case WDI_TDLS_LINK_ESTABLISH_REQ:
24007 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024008 case WDI_TDLS_CHAN_SWITCH_REQ:
24009 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024010#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024017 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024023 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024024 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024025 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024026 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024027 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024028 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 case WDI_REM_BEACON_FILTER_REQ:
24032 return WLAN_HAL_REM_BCN_FILTER_REQ;
24033 case WDI_SET_RSSI_THRESHOLDS_REQ:
24034 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24035 case WDI_HOST_OFFLOAD_REQ:
24036 return WLAN_HAL_HOST_OFFLOAD_REQ;
24037 case WDI_WOWL_ADD_BC_PTRN_REQ:
24038 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24039 case WDI_WOWL_DEL_BC_PTRN_REQ:
24040 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24041 case WDI_WOWL_ENTER_REQ:
24042 return WLAN_HAL_ENTER_WOWL_REQ;
24043 case WDI_WOWL_EXIT_REQ:
24044 return WLAN_HAL_EXIT_WOWL_REQ;
24045 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24046 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24047 case WDI_NV_DOWNLOAD_REQ:
24048 return WLAN_HAL_DOWNLOAD_NV_REQ;
24049 case WDI_FLUSH_AC_REQ:
24050 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24051 case WDI_BTAMP_EVENT_REQ:
24052 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24053#ifdef WLAN_FEATURE_VOWIFI_11R
24054 case WDI_AGGR_ADD_TS_REQ:
24055 return WLAN_HAL_AGGR_ADD_TS_REQ;
24056#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 case WDI_FTM_CMD_REQ:
24058 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024059 case WDI_ADD_STA_SELF_REQ:
24060 return WLAN_HAL_ADD_STA_SELF_REQ;
24061 case WDI_DEL_STA_SELF_REQ:
24062 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024063#ifdef FEATURE_OEM_DATA_SUPPORT
24064 case WDI_START_OEM_DATA_REQ:
24065 return WLAN_HAL_START_OEM_DATA_REQ;
24066#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024067 case WDI_HOST_RESUME_REQ:
24068 return WLAN_HAL_HOST_RESUME_REQ;
24069 case WDI_HOST_SUSPEND_IND:
24070 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024071 case WDI_TRAFFIC_STATS_IND:
24072 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024073#ifdef WLAN_FEATURE_11W
24074 case WDI_EXCLUDE_UNENCRYPTED_IND:
24075 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24076#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024077 case WDI_KEEP_ALIVE_REQ:
24078 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024079#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024080 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24081 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024082#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024083#ifdef FEATURE_WLAN_SCAN_PNO
24084 case WDI_SET_PREF_NETWORK_REQ:
24085 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24086 case WDI_SET_RSSI_FILTER_REQ:
24087 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24088 case WDI_UPDATE_SCAN_PARAMS_REQ:
24089 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24090#endif // FEATURE_WLAN_SCAN_PNO
24091 case WDI_SET_TX_PER_TRACKING_REQ:
24092 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24093#ifdef WLAN_FEATURE_PACKET_FILTERING
24094 case WDI_8023_MULTICAST_LIST_REQ:
24095 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24096 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024097 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024098 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24099 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24100 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24101 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24102#endif // WLAN_FEATURE_PACKET_FILTERING
24103 case WDI_HAL_DUMP_CMD_REQ:
24104 return WLAN_HAL_DUMP_COMMAND_REQ;
24105#ifdef WLAN_FEATURE_GTK_OFFLOAD
24106 case WDI_GTK_OFFLOAD_REQ:
24107 return WLAN_HAL_GTK_OFFLOAD_REQ;
24108 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24109 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24110#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24111
24112 case WDI_INIT_SCAN_CON_REQ:
24113 return WLAN_HAL_INIT_SCAN_CON_REQ;
24114 case WDI_SET_POWER_PARAMS_REQ:
24115 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24116 case WDI_SET_TM_LEVEL_REQ:
24117 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24118 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24119 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024120#ifdef WLAN_FEATURE_11AC
24121 case WDI_UPDATE_VHT_OP_MODE_REQ:
24122 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24123#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024124 case WDI_GET_ROAM_RSSI_REQ:
24125 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024126 case WDI_DHCP_START_IND:
24127 return WLAN_HAL_DHCP_START_IND;
24128 case WDI_DHCP_STOP_IND:
24129 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024130#ifdef FEATURE_WLAN_LPHB
24131 case WDI_LPHB_CFG_REQ:
24132 return WLAN_HAL_LPHB_CFG_REQ;
24133#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024134 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24135 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24136 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24137 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24138
Rajeev79dbe4c2013-10-05 11:03:42 +053024139#ifdef FEATURE_WLAN_BATCH_SCAN
24140 case WDI_SET_BATCH_SCAN_REQ:
24141 return WLAN_HAL_BATCHSCAN_SET_REQ;
24142 case WDI_STOP_BATCH_SCAN_IND:
24143 return WLAN_HAL_BATCHSCAN_STOP_IND;
24144 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24145 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24146#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024147 case WDI_RATE_UPDATE_IND:
24148 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024149 case WDI_START_HT40_OBSS_SCAN_IND:
24150 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24151 case WDI_STOP_HT40_OBSS_SCAN_IND:
24152 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024153 case WDI_UPDATE_CHAN_REQ:
24154 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024155 case WDI_CH_SWITCH_REQ_V1:
24156 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024157 case WDI_GET_BCN_MISS_RATE_REQ:
24158 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024159
24160#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24161 case WDI_LL_STATS_SET_REQ:
24162 return WLAN_HAL_LL_SET_STATS_REQ;
24163 case WDI_LL_STATS_GET_REQ:
24164 return WLAN_HAL_LL_GET_STATS_REQ;
24165 case WDI_LL_STATS_CLEAR_REQ:
24166 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24167#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024168#ifdef WLAN_FEATURE_EXTSCAN
24169 case WDI_EXTSCAN_START_REQ:
24170 return WLAN_HAL_EXT_SCAN_START_REQ;
24171 case WDI_EXTSCAN_STOP_REQ:
24172 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24173 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24174 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24175 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24176 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24177 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24178 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24179 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24180 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
24181 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
24182 return WLAN_HAL_SIG_RSSI_SET_REQ;
24183 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
24184 return WLAN_HAL_SIG_RSSI_RESET_REQ;
24185#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024186 case WDI_SPOOF_MAC_ADDR_REQ:
24187 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024188 case WDI_GET_FW_STATS_REQ:
24189 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024190 case WDI_ENCRYPT_MSG_REQ:
24191 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024192 case WDI_FW_LOGGING_INIT_REQ:
24193 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024194 case WDI_GET_FRAME_LOG_REQ:
24195 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024196 case WDI_NAN_REQUEST:
24197 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024198 case WDI_SET_RTS_CTS_HTVHT_IND:
24199 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024200 case WDI_MON_START_REQ:
24201 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24202 case WDI_MON_STOP_REQ:
24203 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024204 case WDI_FW_LOGGING_DXE_DONE_IND:
24205 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024206 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024207 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024208 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024209
Jeff Johnson295189b2012-06-20 16:38:30 -070024210}/*WDI_2_HAL_REQ_TYPE*/
24211
24212/*Convert WDI response type into HAL response type*/
24213WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24214HAL_2_WDI_RSP_TYPE
24215(
24216 tHalHostMsgType halMsg
24217)
24218{
Jeff Johnsone7245742012-09-05 17:12:55 -070024219 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024220 the chances of getting inlined*/
24221 switch( halMsg )
24222 {
24223 case WLAN_HAL_START_RSP:
24224 return WDI_START_RESP;
24225 case WLAN_HAL_STOP_RSP:
24226 return WDI_STOP_RESP;
24227 case WLAN_HAL_INIT_SCAN_RSP:
24228 return WDI_INIT_SCAN_RESP;
24229 case WLAN_HAL_START_SCAN_RSP:
24230 return WDI_START_SCAN_RESP;
24231 case WLAN_HAL_END_SCAN_RSP:
24232 return WDI_END_SCAN_RESP;
24233 case WLAN_HAL_FINISH_SCAN_RSP:
24234 return WDI_FINISH_SCAN_RESP;
24235 case WLAN_HAL_CONFIG_STA_RSP:
24236 return WDI_CONFIG_STA_RESP;
24237 case WLAN_HAL_DELETE_STA_RSP:
24238 return WDI_DEL_STA_RESP;
24239 case WLAN_HAL_CONFIG_BSS_RSP:
24240 return WDI_CONFIG_BSS_RESP;
24241 case WLAN_HAL_DELETE_BSS_RSP:
24242 return WDI_DEL_BSS_RESP;
24243 case WLAN_HAL_JOIN_RSP:
24244 return WDI_JOIN_RESP;
24245 case WLAN_HAL_POST_ASSOC_RSP:
24246 return WDI_POST_ASSOC_RESP;
24247 case WLAN_HAL_SET_BSSKEY_RSP:
24248 return WDI_SET_BSS_KEY_RESP;
24249 case WLAN_HAL_SET_STAKEY_RSP:
24250 return WDI_SET_STA_KEY_RESP;
24251 case WLAN_HAL_RMV_BSSKEY_RSP:
24252 return WDI_RMV_BSS_KEY_RESP;
24253 case WLAN_HAL_RMV_STAKEY_RSP:
24254 return WDI_RMV_STA_KEY_RESP;
24255 case WLAN_HAL_SET_BCASTKEY_RSP:
24256 return WDI_SET_STA_BCAST_KEY_RESP;
24257 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24258 // return WDI_RMV_STA_BCAST_KEY_RESP;
24259 case WLAN_HAL_ADD_TS_RSP:
24260 return WDI_ADD_TS_RESP;
24261 case WLAN_HAL_DEL_TS_RSP:
24262 return WDI_DEL_TS_RESP;
24263 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24264 return WDI_UPD_EDCA_PRMS_RESP;
24265 case WLAN_HAL_ADD_BA_RSP:
24266 return WDI_ADD_BA_RESP;
24267 case WLAN_HAL_DEL_BA_RSP:
24268 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024269#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024270 case WLAN_HAL_TSM_STATS_RSP:
24271 return WDI_TSM_STATS_RESP;
24272#endif
24273 case WLAN_HAL_CH_SWITCH_RSP:
24274 return WDI_CH_SWITCH_RESP;
24275 case WLAN_HAL_SET_LINK_ST_RSP:
24276 return WDI_SET_LINK_ST_RESP;
24277 case WLAN_HAL_GET_STATS_RSP:
24278 return WDI_GET_STATS_RESP;
24279 case WLAN_HAL_UPDATE_CFG_RSP:
24280 return WDI_UPDATE_CFG_RESP;
24281 case WLAN_HAL_ADD_BA_SESSION_RSP:
24282 return WDI_ADD_BA_SESSION_RESP;
24283 case WLAN_HAL_TRIGGER_BA_RSP:
24284 return WDI_TRIGGER_BA_RESP;
24285 case WLAN_HAL_UPDATE_BEACON_RSP:
24286 return WDI_UPD_BCON_PRMS_RESP;
24287 case WLAN_HAL_SEND_BEACON_RSP:
24288 return WDI_SND_BCON_RESP;
24289 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24290 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24291 /*Indications*/
24292 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24293 return WDI_HAL_RSSI_NOTIFICATION_IND;
24294 case WLAN_HAL_MISSED_BEACON_IND:
24295 return WDI_HAL_MISSED_BEACON_IND;
24296 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24297 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24298 case WLAN_HAL_MIC_FAILURE_IND:
24299 return WDI_HAL_MIC_FAILURE_IND;
24300 case WLAN_HAL_FATAL_ERROR_IND:
24301 return WDI_HAL_FATAL_ERROR_IND;
24302 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24303 return WDI_HAL_DEL_STA_IND;
24304 case WLAN_HAL_COEX_IND:
24305 return WDI_HAL_COEX_IND;
24306 case WLAN_HAL_OTA_TX_COMPL_IND:
24307 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 case WLAN_HAL_P2P_NOA_ATTR_IND:
24309 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024310 case WLAN_HAL_P2P_NOA_START_IND:
24311 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024312 case WLAN_HAL_DEL_BA_IND:
24313 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 case WLAN_HAL_TX_PER_HIT_IND:
24315 return WDI_HAL_TX_PER_HIT_IND;
24316 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24317 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024318 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24319 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024320 case WLAN_HAL_SET_TX_POWER_RSP:
24321 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 case WLAN_HAL_SET_P2P_GONOA_RSP:
24323 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024324#ifdef FEATURE_WLAN_TDLS
24325 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24326 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024327 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24328 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024329 case WLAN_HAL_TDLS_IND:
24330 return WDI_HAL_TDLS_IND;
24331#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024333 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024335 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024337 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024339 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024341 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024342 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024343 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024349 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024350 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24351 return WDI_SET_BEACON_FILTER_RESP;
24352 case WLAN_HAL_REM_BCN_FILTER_RSP:
24353 return WDI_REM_BEACON_FILTER_RESP;
24354 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24355 return WDI_SET_RSSI_THRESHOLDS_RESP;
24356 case WLAN_HAL_HOST_OFFLOAD_RSP:
24357 return WDI_HOST_OFFLOAD_RESP;
24358 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24359 return WDI_WOWL_ADD_BC_PTRN_RESP;
24360 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24361 return WDI_WOWL_DEL_BC_PTRN_RESP;
24362 case WLAN_HAL_ENTER_WOWL_RSP:
24363 return WDI_WOWL_ENTER_RESP;
24364 case WLAN_HAL_EXIT_WOWL_RSP:
24365 return WDI_WOWL_EXIT_RESP;
24366 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24367 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24368 case WLAN_HAL_DOWNLOAD_NV_RSP:
24369 return WDI_NV_DOWNLOAD_RESP;
24370 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24371 return WDI_FLUSH_AC_RESP;
24372 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24373 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024374 case WLAN_HAL_PROCESS_PTT_RSP:
24375 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024376 case WLAN_HAL_ADD_STA_SELF_RSP:
24377 return WDI_ADD_STA_SELF_RESP;
24378case WLAN_HAL_DEL_STA_SELF_RSP:
24379 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024380#ifdef FEATURE_OEM_DATA_SUPPORT
24381 case WLAN_HAL_START_OEM_DATA_RSP:
24382 return WDI_START_OEM_DATA_RESP;
24383#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 case WLAN_HAL_HOST_RESUME_RSP:
24385 return WDI_HOST_RESUME_RESP;
24386 case WLAN_HAL_KEEP_ALIVE_RSP:
24387 return WDI_KEEP_ALIVE_RESP;
24388#ifdef FEATURE_WLAN_SCAN_PNO
24389 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24390 return WDI_SET_PREF_NETWORK_RESP;
24391 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024392 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24394 return WDI_UPDATE_SCAN_PARAMS_RESP;
24395 case WLAN_HAL_PREF_NETW_FOUND_IND:
24396 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24397#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024398#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024399 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24400 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024401#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024402 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24403 return WDI_SET_TX_PER_TRACKING_RESP;
24404#ifdef WLAN_FEATURE_PACKET_FILTERING
24405 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24406 return WDI_8023_MULTICAST_LIST_RESP;
24407 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24408 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24409 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24410 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24411 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24412 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24413#endif // WLAN_FEATURE_PACKET_FILTERING
24414
24415 case WLAN_HAL_DUMP_COMMAND_RSP:
24416 return WDI_HAL_DUMP_CMD_RESP;
24417 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24418 return WDI_SET_POWER_PARAMS_RESP;
24419#ifdef WLAN_FEATURE_VOWIFI_11R
24420 case WLAN_HAL_AGGR_ADD_TS_RSP:
24421 return WDI_AGGR_ADD_TS_RESP;
24422#endif
24423
24424#ifdef WLAN_FEATURE_GTK_OFFLOAD
24425 case WLAN_HAL_GTK_OFFLOAD_RSP:
24426 return WDI_GTK_OFFLOAD_RESP;
24427 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24428 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24429#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24430#ifdef WLAN_WAKEUP_EVENTS
24431 case WLAN_HAL_WAKE_REASON_IND:
24432 return WDI_HAL_WAKE_REASON_IND;
24433#endif // WLAN_WAKEUP_EVENTS
24434
24435 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24436 return WDI_SET_TM_LEVEL_RESP;
24437 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24438 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024439#ifdef WLAN_FEATURE_11AC
24440 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24441 return WDI_UPDATE_VHT_OP_MODE_RESP;
24442#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024443#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024444 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24445 return WDI_GET_ROAM_RSSI_RESP;
24446#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024447
Leo Chang9056f462013-08-01 19:21:11 -070024448#ifdef FEATURE_WLAN_LPHB
24449 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024450 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024451 case WLAN_HAL_LPHB_CFG_RSP:
24452 return WDI_LPHB_CFG_RESP;
24453#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024454
24455 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24456 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024457 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24458 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024459
Rajeev79dbe4c2013-10-05 11:03:42 +053024460#ifdef FEATURE_WLAN_BATCH_SCAN
24461 case WLAN_HAL_BATCHSCAN_SET_RSP:
24462 return WDI_SET_BATCH_SCAN_RESP;
24463 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24464 return WDI_BATCHSCAN_RESULT_IND;
24465#endif // FEATURE_WLAN_BATCH_SCAN
24466
Leo Chang0b0e45a2013-12-15 15:18:55 -080024467#ifdef FEATURE_WLAN_CH_AVOID
24468 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24469 return WDI_HAL_CH_AVOID_IND;
24470#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024471 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24472 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024473 case WLAN_HAL_PRINT_REG_INFO_IND:
24474 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024475 case WLAN_HAL_CH_SWITCH_V1_RSP:
24476 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024477 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24478 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024479#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24480 case WLAN_HAL_LL_SET_STATS_RSP:
24481 return WDI_LL_STATS_SET_RSP;
24482 case WLAN_HAL_LL_GET_STATS_RSP:
24483 return WDI_LL_STATS_GET_RSP;
24484 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24485 return WDI_LL_STATS_CLEAR_RSP;
24486 case WLAN_HAL_LL_NOTIFY_STATS:
24487 return WDI_HAL_LL_STATS_RESULTS_IND;
24488#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024489#ifdef WLAN_FEATURE_EXTSCAN
24490 case WLAN_HAL_EXT_SCAN_START_RSP:
24491 return WDI_EXTSCAN_START_RSP;
24492 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24493 return WDI_EXTSCAN_STOP_RSP;
24494 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24495 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24496 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24497 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24498 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24499 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24500 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24501 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24502 case WLAN_HAL_SIG_RSSI_SET_RSP:
24503 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24504 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24505 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24506 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24507 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24508 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24509 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24510 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24511 return WDI_HAL_EXTSCAN_RESULT_IND;
24512 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24513 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24514 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24515 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24516#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024517 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24518 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024519 case WLAN_HAL_FW_STATS_RSP:
24520 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024521 case WLAN_HAL_ENCRYPT_DATA_RSP:
24522 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024523 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24524 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024525 case WLAN_HAL_GET_FRAME_LOG_RSP:
24526 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024527 case WLAN_HAL_NAN_RSP:
24528 return WDI_NAN_RESPONSE;
24529 case WLAN_HAL_NAN_EVT:
24530 return WDI_HAL_NAN_EVENT;
Katya Nigamf0511f62015-05-05 16:40:57 +053024531 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24532 return WDI_MON_START_RSP;
24533 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24534 return WDI_MON_STOP_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024535 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024536 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024537 }
24538
24539}/*HAL_2_WDI_RSP_TYPE*/
24540
24541
24542/*Convert WDI driver type into HAL driver type*/
24543WPT_STATIC WPT_INLINE tDriverType
24544WDI_2_HAL_DRV_TYPE
24545(
24546 WDI_DriverType wdiDriverType
24547)
24548{
Jeff Johnsone7245742012-09-05 17:12:55 -070024549 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024550 the chances of getting inlined*/
24551 switch( wdiDriverType )
24552 {
24553 case WDI_DRIVER_TYPE_PRODUCTION:
24554 return eDRIVER_TYPE_PRODUCTION;
24555 case WDI_DRIVER_TYPE_MFG:
24556 return eDRIVER_TYPE_MFG;
24557 case WDI_DRIVER_TYPE_DVT:
24558 return eDRIVER_TYPE_DVT;
24559 }
24560
Jeff Johnsone7245742012-09-05 17:12:55 -070024561 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024562}/*WDI_2_HAL_DRV_TYPE*/
24563
24564
24565/*Convert WDI stop reason into HAL stop reason*/
24566WPT_STATIC WPT_INLINE tHalStopType
24567WDI_2_HAL_STOP_REASON
24568(
24569 WDI_StopType wdiDriverType
24570)
24571{
Jeff Johnsone7245742012-09-05 17:12:55 -070024572 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024573 the chances of getting inlined*/
24574 switch( wdiDriverType )
24575 {
24576 case WDI_STOP_TYPE_SYS_RESET:
24577 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024578 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24579 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024580 case WDI_STOP_TYPE_RF_KILL:
24581 return HAL_STOP_TYPE_RF_KILL;
24582 }
24583
Jeff Johnsone7245742012-09-05 17:12:55 -070024584 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024585}/*WDI_2_HAL_STOP_REASON*/
24586
24587
24588/*Convert WDI scan mode type into HAL scan mode type*/
24589WPT_STATIC WPT_INLINE eHalSysMode
24590WDI_2_HAL_SCAN_MODE
24591(
24592 WDI_ScanMode wdiScanMode
24593)
24594{
Jeff Johnsone7245742012-09-05 17:12:55 -070024595 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024596 the chances of getting inlined*/
24597 switch( wdiScanMode )
24598 {
24599 case WDI_SCAN_MODE_NORMAL:
24600 return eHAL_SYS_MODE_NORMAL;
24601 case WDI_SCAN_MODE_LEARN:
24602 return eHAL_SYS_MODE_LEARN;
24603 case WDI_SCAN_MODE_SCAN:
24604 return eHAL_SYS_MODE_SCAN;
24605 case WDI_SCAN_MODE_PROMISC:
24606 return eHAL_SYS_MODE_PROMISC;
24607 case WDI_SCAN_MODE_SUSPEND_LINK:
24608 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024609 case WDI_SCAN_MODE_ROAM_SCAN:
24610 return eHAL_SYS_MODE_ROAM_SCAN;
24611 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24612 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024613 }
24614
Jeff Johnsone7245742012-09-05 17:12:55 -070024615 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024616}/*WDI_2_HAL_SCAN_MODE*/
24617
24618/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024619WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024620WDI_2_HAL_SEC_CH_OFFSET
24621(
24622 WDI_HTSecondaryChannelOffset wdiSecChOffset
24623)
24624{
Jeff Johnsone7245742012-09-05 17:12:55 -070024625 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024626 the chances of getting inlined*/
24627 switch( wdiSecChOffset )
24628 {
24629 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024630 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024631 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024632 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024633 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024634 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24635#ifdef WLAN_FEATURE_11AC
24636 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24637 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24638 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24639 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24640 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24641 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24642 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24643 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24644 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24645 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24646 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24647 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24648 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24649 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24650#endif
24651 default:
24652 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024653 }
24654
Jeff Johnsone7245742012-09-05 17:12:55 -070024655 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024656}/*WDI_2_HAL_SEC_CH_OFFSET*/
24657
24658/*Convert WDI BSS type into HAL BSS type*/
24659WPT_STATIC WPT_INLINE tSirBssType
24660WDI_2_HAL_BSS_TYPE
24661(
24662 WDI_BssType wdiBSSType
24663)
24664{
Jeff Johnsone7245742012-09-05 17:12:55 -070024665 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024666 the chances of getting inlined*/
24667 switch( wdiBSSType )
24668 {
24669 case WDI_INFRASTRUCTURE_MODE:
24670 return eSIR_INFRASTRUCTURE_MODE;
24671 case WDI_INFRA_AP_MODE:
24672 return eSIR_INFRA_AP_MODE;
24673 case WDI_IBSS_MODE:
24674 return eSIR_IBSS_MODE;
24675 case WDI_BTAMP_STA_MODE:
24676 return eSIR_BTAMP_STA_MODE;
24677 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024678 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024679 case WDI_BSS_AUTO_MODE:
24680 return eSIR_AUTO_MODE;
24681 }
24682
Jeff Johnsone7245742012-09-05 17:12:55 -070024683 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024684}/*WDI_2_HAL_BSS_TYPE*/
24685
24686/*Convert WDI NW type into HAL NW type*/
24687WPT_STATIC WPT_INLINE tSirNwType
24688WDI_2_HAL_NW_TYPE
24689(
24690 WDI_NwType wdiNWType
24691)
24692{
Jeff Johnsone7245742012-09-05 17:12:55 -070024693 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 the chances of getting inlined*/
24695 switch( wdiNWType )
24696 {
24697 case WDI_11A_NW_TYPE:
24698 return eSIR_11A_NW_TYPE;
24699 case WDI_11B_NW_TYPE:
24700 return eSIR_11B_NW_TYPE;
24701 case WDI_11G_NW_TYPE:
24702 return eSIR_11G_NW_TYPE;
24703 case WDI_11N_NW_TYPE:
24704 return eSIR_11N_NW_TYPE;
24705 }
24706
Jeff Johnsone7245742012-09-05 17:12:55 -070024707 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024708}/*WDI_2_HAL_NW_TYPE*/
24709
24710/*Convert WDI chanel bonding type into HAL cb type*/
24711WPT_STATIC WPT_INLINE ePhyChanBondState
24712WDI_2_HAL_CB_STATE
24713(
24714 WDI_PhyChanBondState wdiCbState
24715)
24716{
Jeff Johnsone7245742012-09-05 17:12:55 -070024717 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024718 the chances of getting inlined*/
24719 switch ( wdiCbState )
24720 {
24721 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24722 return PHY_SINGLE_CHANNEL_CENTERED;
24723 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24724 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24725 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24726 return PHY_DOUBLE_CHANNEL_CENTERED;
24727 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24728 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024729#ifdef WLAN_FEATURE_11AC
24730 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24731 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24732 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24733 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24734 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24735 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24736 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24737 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24738 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24739 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24740 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24741 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24742 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24743 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24744#endif
24745 case WDI_MAX_CB_STATE:
24746 default:
24747 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024749
Jeff Johnson295189b2012-06-20 16:38:30 -070024750 return PHY_CHANNEL_BONDING_STATE_MAX;
24751}/*WDI_2_HAL_CB_STATE*/
24752
24753/*Convert WDI chanel bonding type into HAL cb type*/
24754WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24755WDI_2_HAL_HT_OPER_MODE
24756(
24757 WDI_HTOperatingMode wdiHTOperMode
24758)
24759{
Jeff Johnsone7245742012-09-05 17:12:55 -070024760 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024761 the chances of getting inlined*/
24762 switch ( wdiHTOperMode )
24763 {
24764 case WDI_HT_OP_MODE_PURE:
24765 return eSIR_HT_OP_MODE_PURE;
24766 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24767 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24768 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24769 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24770 case WDI_HT_OP_MODE_MIXED:
24771 return eSIR_HT_OP_MODE_MIXED;
24772 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024773
Jeff Johnson295189b2012-06-20 16:38:30 -070024774 return eSIR_HT_OP_MODE_MAX;
24775}/*WDI_2_HAL_HT_OPER_MODE*/
24776
24777/*Convert WDI mimo PS type into HAL mimo PS type*/
24778WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24779WDI_2_HAL_MIMO_PS
24780(
24781 WDI_HTMIMOPowerSaveState wdiHTOperMode
24782)
24783{
Jeff Johnsone7245742012-09-05 17:12:55 -070024784 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024785 the chances of getting inlined*/
24786 switch ( wdiHTOperMode )
24787 {
24788 case WDI_HT_MIMO_PS_STATIC:
24789 return eSIR_HT_MIMO_PS_STATIC;
24790 case WDI_HT_MIMO_PS_DYNAMIC:
24791 return eSIR_HT_MIMO_PS_DYNAMIC;
24792 case WDI_HT_MIMO_PS_NA:
24793 return eSIR_HT_MIMO_PS_NA;
24794 case WDI_HT_MIMO_PS_NO_LIMIT:
24795 return eSIR_HT_MIMO_PS_NO_LIMIT;
24796 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024797
Jeff Johnson295189b2012-06-20 16:38:30 -070024798 return eSIR_HT_MIMO_PS_MAX;
24799}/*WDI_2_HAL_MIMO_PS*/
24800
24801/*Convert WDI ENC type into HAL ENC type*/
24802WPT_STATIC WPT_INLINE tAniEdType
24803WDI_2_HAL_ENC_TYPE
24804(
24805 WDI_EncryptType wdiEncType
24806)
24807{
Jeff Johnsone7245742012-09-05 17:12:55 -070024808 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024809 the chances of getting inlined*/
24810 switch ( wdiEncType )
24811 {
24812 case WDI_ENCR_NONE:
24813 return eSIR_ED_NONE;
24814
24815 case WDI_ENCR_WEP40:
24816 return eSIR_ED_WEP40;
24817
24818 case WDI_ENCR_WEP104:
24819 return eSIR_ED_WEP104;
24820
24821 case WDI_ENCR_TKIP:
24822 return eSIR_ED_TKIP;
24823
24824 case WDI_ENCR_CCMP:
24825 return eSIR_ED_CCMP;
24826
24827 case WDI_ENCR_AES_128_CMAC:
24828 return eSIR_ED_AES_128_CMAC;
24829#if defined(FEATURE_WLAN_WAPI)
24830 case WDI_ENCR_WPI:
24831 return eSIR_ED_WPI;
24832#endif
24833 default:
24834 return eSIR_ED_NOT_IMPLEMENTED;
24835 }
24836
24837}/*WDI_2_HAL_ENC_TYPE*/
24838
24839/*Convert WDI WEP type into HAL WEP type*/
24840WPT_STATIC WPT_INLINE tAniWepType
24841WDI_2_HAL_WEP_TYPE
24842(
24843 WDI_WepType wdiWEPType
24844)
24845{
Jeff Johnsone7245742012-09-05 17:12:55 -070024846 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024847 the chances of getting inlined*/
24848 switch ( wdiWEPType )
24849 {
24850 case WDI_WEP_STATIC:
24851 return eSIR_WEP_STATIC;
24852
24853 case WDI_WEP_DYNAMIC:
24854 return eSIR_WEP_DYNAMIC;
24855 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024856
Jeff Johnson295189b2012-06-20 16:38:30 -070024857 return eSIR_WEP_MAX;
24858}/*WDI_2_HAL_WEP_TYPE*/
24859
24860WPT_STATIC WPT_INLINE tSirLinkState
24861WDI_2_HAL_LINK_STATE
24862(
24863 WDI_LinkStateType wdiLinkState
24864)
24865{
Jeff Johnsone7245742012-09-05 17:12:55 -070024866 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024867 the chances of getting inlined*/
24868 switch ( wdiLinkState )
24869 {
24870 case WDI_LINK_IDLE_STATE:
24871 return eSIR_LINK_IDLE_STATE;
24872
24873 case WDI_LINK_PREASSOC_STATE:
24874 return eSIR_LINK_PREASSOC_STATE;
24875
24876 case WDI_LINK_POSTASSOC_STATE:
24877 return eSIR_LINK_POSTASSOC_STATE;
24878
24879 case WDI_LINK_AP_STATE:
24880 return eSIR_LINK_AP_STATE;
24881
24882 case WDI_LINK_IBSS_STATE:
24883 return eSIR_LINK_IBSS_STATE;
24884
24885 case WDI_LINK_BTAMP_PREASSOC_STATE:
24886 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24887
24888 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24889 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24890
24891 case WDI_LINK_BTAMP_AP_STATE:
24892 return eSIR_LINK_BTAMP_AP_STATE;
24893
24894 case WDI_LINK_BTAMP_STA_STATE:
24895 return eSIR_LINK_BTAMP_STA_STATE;
24896
24897 case WDI_LINK_LEARN_STATE:
24898 return eSIR_LINK_LEARN_STATE;
24899
24900 case WDI_LINK_SCAN_STATE:
24901 return eSIR_LINK_SCAN_STATE;
24902
24903 case WDI_LINK_FINISH_SCAN_STATE:
24904 return eSIR_LINK_FINISH_SCAN_STATE;
24905
24906 case WDI_LINK_INIT_CAL_STATE:
24907 return eSIR_LINK_INIT_CAL_STATE;
24908
24909 case WDI_LINK_FINISH_CAL_STATE:
24910 return eSIR_LINK_FINISH_CAL_STATE;
24911
Jeff Johnson295189b2012-06-20 16:38:30 -070024912 case WDI_LINK_LISTEN_STATE:
24913 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024914
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024915 case WDI_LINK_SEND_ACTION_STATE:
24916 return eSIR_LINK_SEND_ACTION_STATE;
24917
Jeff Johnson295189b2012-06-20 16:38:30 -070024918 default:
24919 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024920 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024921}
24922
Jeff Johnsone7245742012-09-05 17:12:55 -070024923/*Translate a STA Context from WDI into HAL*/
24924WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024925void
24926WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024927(
Jeff Johnson295189b2012-06-20 16:38:30 -070024928 tConfigStaParams* phalConfigSta,
24929 WDI_ConfigStaReqInfoType* pwdiConfigSta
24930)
24931{
24932 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024933#ifdef WLAN_FEATURE_11AC
24934 /* Get the Version 1 Handler */
24935 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24936 if (WDI_getFwWlanFeatCaps(DOT11AC))
24937 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024938 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024939 }
24940#endif
24941 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024942 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024943
Jeff Johnsone7245742012-09-05 17:12:55 -070024944 wpalMemoryCopy(phalConfigSta->bssId,
24945 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24946
24947 wpalMemoryCopy(phalConfigSta->staMac,
24948 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024949
24950 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24951 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24952 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24953 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24954 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24955 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24956 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24957 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24958 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24959 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24960 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24961 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24962 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24963 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24964 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24965 phalConfigSta->action = pwdiConfigSta->wdiAction;
24966 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24967 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24968 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24969 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24970 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24971 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24972 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024973
Jeff Johnson295189b2012-06-20 16:38:30 -070024974 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24975
Jeff Johnsone7245742012-09-05 17:12:55 -070024976 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024977 pwdiConfigSta->wdiSupportedRates.opRateMode;
24978 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24979 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024980 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024981 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24982 }
24983 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24984 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024985 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024986 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24987 }
24988 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24989 {
24990 phalConfigSta->supportedRates.aniLegacyRates[i] =
24991 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24992 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024993 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024994 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24995 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24996 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024997 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024998 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24999 }
25000 phalConfigSta->supportedRates.rxHighestDataRate =
25001 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25002
Jeff Johnsone7245742012-09-05 17:12:55 -070025003#ifdef WLAN_FEATURE_11AC
25004 if(phalConfigSta_V1 != NULL)
25005 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025006 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25007 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25008 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25009 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025010 }
25011#endif
25012
Jeff Johnson295189b2012-06-20 16:38:30 -070025013 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025014
Jeff Johnsone7245742012-09-05 17:12:55 -070025015#ifdef WLAN_FEATURE_11AC
25016 if(phalConfigSta_V1 != NULL)
25017 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025018 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25019 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025020 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025021 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025022 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25023 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25024
Jeff Johnsone7245742012-09-05 17:12:55 -070025025 }
25026#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025027}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025028
25029/*Translate a Rate set info from WDI into HAL*/
25030WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025031WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025032(
Jeff Johnson295189b2012-06-20 16:38:30 -070025033 tSirMacRateSet* pHalRateSet,
25034 WDI_RateSet* pwdiRateSet
25035)
25036{
Jeff Johnsone7245742012-09-05 17:12:55 -070025037 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25039
25040 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25041 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25042
25043 for ( i = 0; i < pHalRateSet->numRates; i++ )
25044 {
25045 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25046 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025047
Jeff Johnson295189b2012-06-20 16:38:30 -070025048}/*WDI_CopyWDIRateSetToHALRateSet*/
25049
25050
25051/*Translate an EDCA Parameter Record from WDI into HAL*/
25052WPT_STATIC WPT_INLINE void
25053WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025054(
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 tSirMacEdcaParamRecord* phalEdcaParam,
25056 WDI_EdcaParamRecord* pWDIEdcaParam
25057)
25058{
Jeff Johnsone7245742012-09-05 17:12:55 -070025059 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025060 the chances of getting inlined*/
25061
25062 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25063 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25064 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25065 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25066
25067 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25068 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25069 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25070}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25071
25072
25073/*Copy a management frame header from WDI fmt into HAL fmt*/
25074WPT_STATIC WPT_INLINE void
25075WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25076(
25077 tSirMacMgmtHdr* pmacMgmtHdr,
25078 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25079)
25080{
25081 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25082 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25083 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25084 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25085 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25086 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25087 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25088 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25089 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25090 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25091 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25092
25093 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25094 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25095
Jeff Johnsone7245742012-09-05 17:12:55 -070025096 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025097 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025098 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025099 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025100 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025101 pwdiMacMgmtHdr->bssId, 6);
25102
25103 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25104 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25105 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25106
25107}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25108
25109
25110/*Copy config bss parameters from WDI fmt into HAL fmt*/
25111WPT_STATIC WPT_INLINE void
25112WDI_CopyWDIConfigBSSToHALConfigBSS
25113(
25114 tConfigBssParams* phalConfigBSS,
25115 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25116)
25117{
25118
25119 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025120#ifdef WLAN_FEATURE_11AC
25121 /* Get the Version 1 Handler */
25122 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25123 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025124 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025125#endif
25126
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 wpalMemoryCopy( phalConfigBSS->bssId,
25128 pwdiConfigBSS->macBSSID,
25129 WDI_MAC_ADDR_LEN);
25130
25131#ifdef HAL_SELF_STA_PER_BSS
25132 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25133 pwdiConfigBSS->macSelfAddr,
25134 WDI_MAC_ADDR_LEN);
25135#endif
25136
25137 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25138
25139 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25140 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25141
Jeff Johnsone7245742012-09-05 17:12:55 -070025142 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025143 pwdiConfigBSS->ucShortSlotTimeSupported;
25144 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25145 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25146 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25147 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25148 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025149 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025150 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25151 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25152 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25153 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25154 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25155 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25156 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25157 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25158 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25159 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25160 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25161
Jeff Johnsone7245742012-09-05 17:12:55 -070025162 phalConfigBSS->htOperMode =
25163 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025164
25165 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25166 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25167 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25168 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25169
25170#ifdef WLAN_FEATURE_VOWIFI
25171 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25172#endif
25173
25174 /*! Used 32 as magic number because that is how the ssid is declared inside the
25175 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025176 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025177 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25178 pwdiConfigBSS->wdiSSID.ucLength : 32;
25179 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025180 pwdiConfigBSS->wdiSSID.sSSID,
25181 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025182
25183 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25184 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025185
Jeff Johnson295189b2012-06-20 16:38:30 -070025186 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25187 &pwdiConfigBSS->wdiRateSet);
25188
25189 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25190
25191 if(phalConfigBSS->edcaParamsValid)
25192 {
25193 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25194 &pwdiConfigBSS->wdiBEEDCAParams);
25195 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25196 &pwdiConfigBSS->wdiBKEDCAParams);
25197 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25198 &pwdiConfigBSS->wdiVIEDCAParams);
25199 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25200 &pwdiConfigBSS->wdiVOEDCAParams);
25201 }
25202
Jeff Johnsone7245742012-09-05 17:12:55 -070025203 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025204
25205 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25206
25207#ifdef WLAN_FEATURE_VOWIFI_11R
25208
Jeff Johnsone7245742012-09-05 17:12:55 -070025209 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025210 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025211
Jeff Johnson295189b2012-06-20 16:38:30 -070025212 if( phalConfigBSS->extSetStaKeyParamValid )
25213 {
25214 /*-----------------------------------------------------------------------
25215 Copy the STA Key parameters into the HAL message
25216 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025217 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025218 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25219
Jeff Johnsone7245742012-09-05 17:12:55 -070025220 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025221 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25222
25223 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25224
25225 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25226
25227 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25228
Jeff Johnson295189b2012-06-20 16:38:30 -070025229 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25230 keyIndex++)
25231 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025232 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025233 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25234 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25235 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25236 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25237 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25238 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025239 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025240 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025241 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025242 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025243 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025244 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25245 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025246 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025247 WDI_MAX_KEY_LENGTH);
25248 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025249 }
25250 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25251 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025252 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025253 sizeof(phalConfigBSS->extSetStaKeyParam) );
25254 }
25255
25256#endif /*WLAN_FEATURE_VOWIFI_11R*/
25257
Jeff Johnsone7245742012-09-05 17:12:55 -070025258#ifdef WLAN_FEATURE_11AC
25259 if(phalConfigBSS_V1 != NULL)
25260 {
25261 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25262 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25263 }
25264#endif
25265
Jeff Johnson295189b2012-06-20 16:38:30 -070025266}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25267
25268
Jeff Johnsone7245742012-09-05 17:12:55 -070025269/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025270 pointed to by user data */
25271WPT_STATIC WPT_INLINE void
25272WDI_ExtractRequestCBFromEvent
25273(
25274 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025275 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025276 void** ppUserData
25277)
25278{
25279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25280 switch ( pEvent->wdiRequest )
25281 {
25282 case WDI_START_REQ:
25283 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25284 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25285 break;
25286 case WDI_STOP_REQ:
25287 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25288 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25289 break;
25290 case WDI_INIT_SCAN_REQ:
25291 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25292 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25293 break;
25294 case WDI_START_SCAN_REQ:
25295 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25296 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25297 break;
25298 case WDI_END_SCAN_REQ:
25299 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25300 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25301 break;
25302 case WDI_FINISH_SCAN_REQ:
25303 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25304 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25305 break;
25306 case WDI_JOIN_REQ:
25307 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25308 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25309 break;
25310 case WDI_CONFIG_BSS_REQ:
25311 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25312 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25313 break;
25314 case WDI_DEL_BSS_REQ:
25315 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25316 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25317 break;
25318 case WDI_POST_ASSOC_REQ:
25319 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25320 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25321 break;
25322 case WDI_DEL_STA_REQ:
25323 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25324 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25325 break;
25326 case WDI_DEL_STA_SELF_REQ:
25327 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25328 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25329 break;
25330
25331 case WDI_SET_BSS_KEY_REQ:
25332 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25333 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25334 break;
25335 case WDI_RMV_BSS_KEY_REQ:
25336 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25337 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25338 break;
25339 case WDI_SET_STA_KEY_REQ:
25340 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25341 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25342 break;
25343 case WDI_RMV_STA_KEY_REQ:
25344 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25345 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25346 break;
25347 case WDI_ADD_TS_REQ:
25348 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25349 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25350 break;
25351 case WDI_DEL_TS_REQ:
25352 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25353 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25354 break;
25355 case WDI_UPD_EDCA_PRMS_REQ:
25356 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25357 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25358 break;
25359 case WDI_ADD_BA_SESSION_REQ:
25360 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25361 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25362 break;
25363 case WDI_DEL_BA_REQ:
25364 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25365 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25366 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025367#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025368 case WDI_TSM_STATS_REQ:
25369 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25370 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25371 break;
25372#endif
25373 case WDI_CH_SWITCH_REQ:
25374 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25375 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25376 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025377 case WDI_CH_SWITCH_REQ_V1:
25378 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25379 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25380 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025381 case WDI_CONFIG_STA_REQ:
25382 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25383 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25384 break;
25385 case WDI_SET_LINK_ST_REQ:
25386 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25387 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25388 break;
25389 case WDI_GET_STATS_REQ:
25390 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25391 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25392 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025393#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025394 case WDI_GET_ROAM_RSSI_REQ:
25395 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25396 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25397 break;
25398#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025399 case WDI_UPDATE_CFG_REQ:
25400 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25401 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25402 break;
25403 case WDI_ADD_BA_REQ:
25404 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25405 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25406 break;
25407 case WDI_TRIGGER_BA_REQ:
25408 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25409 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25410 break;
25411 case WDI_UPD_BCON_PRMS_REQ:
25412 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25413 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25414 break;
25415 case WDI_SND_BCON_REQ:
25416 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25417 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25418 break;
25419 case WDI_ENTER_BMPS_REQ:
25420 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25421 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25422 break;
25423 case WDI_EXIT_BMPS_REQ:
25424 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25425 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25426 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025427 case WDI_ENTER_IMPS_REQ:
25428 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25429 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25430 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025431 case WDI_ENTER_UAPSD_REQ:
25432 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25433 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25434 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025435 case WDI_EXIT_UAPSD_REQ:
25436 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25437 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25438 break;
25439 case WDI_SET_UAPSD_PARAM_REQ:
25440 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25441 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25442 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025443 case WDI_UPDATE_UAPSD_PARAM_REQ:
25444 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25445 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25446 break;
25447 case WDI_CONFIGURE_RXP_FILTER_REQ:
25448 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25449 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25450 break;
25451 case WDI_SET_BEACON_FILTER_REQ:
25452 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25453 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25454 break;
25455 case WDI_REM_BEACON_FILTER_REQ:
25456 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25457 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025458 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025459 case WDI_SET_RSSI_THRESHOLDS_REQ:
25460 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25461 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25462 break;
25463 case WDI_HOST_OFFLOAD_REQ:
25464 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25465 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25466 break;
25467 case WDI_WOWL_ADD_BC_PTRN_REQ:
25468 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25469 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25470 break;
25471 case WDI_WOWL_DEL_BC_PTRN_REQ:
25472 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25473 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25474 break;
25475 case WDI_WOWL_ENTER_REQ:
25476 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25477 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25478 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025479 case WDI_WOWL_EXIT_REQ:
25480 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25481 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25482 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025483 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25484 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25485 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25486 break;
25487 case WDI_FLUSH_AC_REQ:
25488 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25489 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25490 break;
25491 case WDI_BTAMP_EVENT_REQ:
25492 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25493 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25494 break;
25495 case WDI_KEEP_ALIVE_REQ:
25496 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25497 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25498 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025499#if defined FEATURE_WLAN_SCAN_PNO
25500 case WDI_SET_PREF_NETWORK_REQ:
25501 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25502 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25503 break;
25504 case WDI_SET_RSSI_FILTER_REQ:
25505 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25506 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25507 break;
25508 case WDI_UPDATE_SCAN_PARAMS_REQ:
25509 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25510 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25511 break;
25512#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025513 case WDI_SET_TX_PER_TRACKING_REQ:
25514 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25515 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025516 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025517#if defined WLAN_FEATURE_PACKET_FILTERING
25518 case WDI_8023_MULTICAST_LIST_REQ:
25519 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25520 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25521 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025522 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25523 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25524 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25525 break;
25526 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25527 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25528 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25529 break;
25530 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25531 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25532 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25533 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025534#endif
25535 case WDI_SET_POWER_PARAMS_REQ:
25536 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25537 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25538 break;
25539#if defined WLAN_FEATURE_GTK_OFFLOAD
25540 case WDI_GTK_OFFLOAD_REQ:
25541 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25542 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25543 break;
25544 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25545 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25546 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25547 break;
25548#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025549
Jeff Johnson295189b2012-06-20 16:38:30 -070025550 default:
25551 *ppfnReqCB = NULL;
25552 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025553 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025554 }
25555}/*WDI_ExtractRequestCBFromEvent*/
25556
25557
25558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025559 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025560 frame xtl is enabled for a particular STA.
25561
25562 WDI_PostAssocReq must have been called.
25563
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 @param uSTAIdx: STA index
25565
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 @see WDI_PostAssocReq
25567 @return Result of the function call
25568*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025569wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025570WDI_IsHwFrameTxTranslationCapable
25571(
25572 wpt_uint8 uSTAIdx
25573)
25574{
Jeff Johnsone7245742012-09-05 17:12:55 -070025575 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025576 uma value*/
25577 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025578 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025579 ------------------------------------------------------------------------*/
25580 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25581 {
25582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25583 "WDI API call before module is initialized - Fail request");
25584
Jeff Johnsone7245742012-09-05 17:12:55 -070025585 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025586 }
25587
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025588#ifdef WLAN_SOFTAP_VSTA_FEATURE
25589 if (IS_VSTA_IDX(uSTAIdx))
25590 {
25591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25592 "STA %d is a Virtual STA, "
25593 "HW frame translation disabled", uSTAIdx);
25594 return eWLAN_PAL_FALSE;
25595 }
25596#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025597
Jeff Johnson295189b2012-06-20 16:38:30 -070025598 return gWDICb.bFrameTransEnabled;
25599}/*WDI_IsHwFrameTxTranslationCapable*/
25600
Katya Nigam6201c3e2014-05-27 17:51:42 +053025601
25602/**
25603 @brief WDI_IsSelfSTA - check if staid is self sta index
25604
25605
25606 @param pWDICtx: pointer to the WLAN DAL context
25607 ucSTAIdx: station index
25608
25609 @return Result of the function call
25610*/
25611wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25612{
25613 wpt_uint8 ucSTAType;
25614
25615 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25616 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25617 {
25618 if( ucSTAType == WDI_STA_ENTRY_SELF )
25619 return eWLAN_PAL_TRUE;
25620 }
25621
25622 return eWLAN_PAL_FALSE;
25623}
25624
25625
25626
Jeff Johnson295189b2012-06-20 16:38:30 -070025627#ifdef FEATURE_WLAN_SCAN_PNO
25628/**
25629 @brief WDI_SetPreferredNetworkList
25630
Jeff Johnsone7245742012-09-05 17:12:55 -070025631 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025632 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025633
Jeff Johnson295189b2012-06-20 16:38:30 -070025634 wdiPNOScanCb: callback for passing back the response
25635 of the Set PNO operation received from the
25636 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025637
Jeff Johnson295189b2012-06-20 16:38:30 -070025638 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025639 callback
25640
Jeff Johnson295189b2012-06-20 16:38:30 -070025641 @return Result of the function call
25642*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025643WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025644WDI_SetPreferredNetworkReq
25645(
25646 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25647 WDI_PNOScanCb wdiPNOScanCb,
25648 void* pUserData
25649)
25650{
25651 WDI_EventInfoType wdiEventData = {{0}};
25652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25653
25654 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025655 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025656 ------------------------------------------------------------------------*/
25657 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25658 {
25659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25660 "WDI API call before module is initialized - Fail request");
25661
Jeff Johnsone7245742012-09-05 17:12:55 -070025662 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025663 }
25664
25665 /*------------------------------------------------------------------------
25666 Fill in Event data and post to the Main FSM
25667 ------------------------------------------------------------------------*/
25668 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025669 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025670 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025671 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025672 wdiEventData.pUserData = pUserData;
25673
25674 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25675}
25676
25677
25678/**
25679 @brief WDI_SetRssiFilterReq
25680
Jeff Johnsone7245742012-09-05 17:12:55 -070025681 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025682 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025683
Jeff Johnson295189b2012-06-20 16:38:30 -070025684 wdiRssiFilterCb: callback for passing back the response
25685 of the Set RSSI Filter operation received from the
25686 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025687
Jeff Johnson295189b2012-06-20 16:38:30 -070025688 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025689 callback
25690
Jeff Johnson295189b2012-06-20 16:38:30 -070025691 @return Result of the function call
25692*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025693WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025694WDI_SetRssiFilterReq
25695(
25696 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25697 WDI_RssiFilterCb wdiRssiFilterCb,
25698 void* pUserData
25699)
25700{
25701 WDI_EventInfoType wdiEventData = {{0}};
25702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25703
25704 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025705 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025706 ------------------------------------------------------------------------*/
25707 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25708 {
25709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25710 "WDI API call before module is initialized - Fail request");
25711
Jeff Johnsone7245742012-09-05 17:12:55 -070025712 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025713 }
25714
25715 /*------------------------------------------------------------------------
25716 Fill in Event data and post to the Main FSM
25717 ------------------------------------------------------------------------*/
25718 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025719 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025720 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025721 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025722 wdiEventData.pUserData = pUserData;
25723
25724 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25725}/*WDI_SetRssiFilterReq*/
25726
25727/**
25728 @brief WDI_UpdateScanParamsReq
25729
Jeff Johnsone7245742012-09-05 17:12:55 -070025730 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025731 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025732
Jeff Johnson295189b2012-06-20 16:38:30 -070025733 wdiUpdateScanParamsCb: callback for passing back the response
25734 of the Set PNO operation received from the
25735 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025736
Jeff Johnson295189b2012-06-20 16:38:30 -070025737 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025738 callback
25739
Jeff Johnson295189b2012-06-20 16:38:30 -070025740 @return Result of the function call
25741*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025742WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025743WDI_UpdateScanParamsReq
25744(
25745 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25746 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25747 void* pUserData
25748)
25749{
25750 WDI_EventInfoType wdiEventData = {{0}};
25751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25752
25753 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025754 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025755 ------------------------------------------------------------------------*/
25756 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25757 {
25758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25759 "WDI API call before module is initialized - Fail request");
25760
Jeff Johnsone7245742012-09-05 17:12:55 -070025761 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025762 }
25763
25764 /*------------------------------------------------------------------------
25765 Fill in Event data and post to the Main FSM
25766 ------------------------------------------------------------------------*/
25767 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025768 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025769 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025770 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025771 wdiEventData.pUserData = pUserData;
25772
25773 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25774}
25775
25776/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025777 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025778 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025779
25780 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025781 pwdiPNOScanReqParams: pointer to the info received
25782 from upper layers
25783 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025784 and its size
25785
Jeff Johnson295189b2012-06-20 16:38:30 -070025786 @return Result of the function call
25787*/
25788
25789WDI_Status
25790WDI_PackPreferredNetworkList
25791(
25792 WDI_ControlBlockType* pWDICtx,
25793 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25794 wpt_uint8** ppSendBuffer,
25795 wpt_uint16* pSize
25796)
25797{
Jeff Johnsone7245742012-09-05 17:12:55 -070025798 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 wpt_uint16 usDataOffset = 0;
25800 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025801 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025802 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025803 /*-----------------------------------------------------------------------
25804 Get message buffer
25805 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025806 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025807 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025808 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025809 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025810 {
25811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025812 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025813 pwdiPNOScanReqParams);
25814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025816 }
25817
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025818 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25819
Jeff Johnson295189b2012-06-20 16:38:30 -070025820 /*-------------------------------------------------------------------------
25821 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25822 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025823 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025824 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025825 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025826 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25827
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025828 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025829 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025830 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025831 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025832 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25833
25834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025835 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025836 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25837 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25838 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25839
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025840 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025841 {
25842 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025843 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025844 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25845
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025846 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025847 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025848 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025849
25850 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025851 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025852 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025853
25854 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025855 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025856 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025857
Jeff Johnsone7245742012-09-05 17:12:55 -070025858 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025859 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025860 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025861 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25862 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25863 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25864 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025865
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025866 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025867 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025868 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025869
25870 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025871 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025872 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25873
25874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025875 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025876 pPrefNetwListParams->aNetworks[i].ssId.length,
25877 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025878 }
25879
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025880 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025881 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025882 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25883 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25884 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25885
25886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025887 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025888 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025889 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25890 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25891
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025892 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025894 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025895 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025896 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025897 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25898 }
25899
25900 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025901 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025902 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25903 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25904 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025905 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025906
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025907 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025908 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025909 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025910
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025911 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025912 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25913 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25914 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025915 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025916
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025917 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025918 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025919 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025920
25921 /*Set the output values*/
25922 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025923 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025924
25925 return WDI_STATUS_SUCCESS;
25926}/*WDI_PackPreferredNetworkList*/
25927
25928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025929 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025930 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025931
25932 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025933 pwdiPNOScanReqParams: pointer to the info received
25934 from upper layers
25935 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025936 and its size
25937
Jeff Johnson295189b2012-06-20 16:38:30 -070025938 @return Result of the function call
25939*/
25940
25941WDI_Status
25942WDI_PackPreferredNetworkListNew
25943(
25944 WDI_ControlBlockType* pWDICtx,
25945 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25946 wpt_uint8** ppSendBuffer,
25947 wpt_uint16* pSize
25948)
25949{
Jeff Johnsone7245742012-09-05 17:12:55 -070025950 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025951 wpt_uint16 usDataOffset = 0;
25952 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025953 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025954 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025955
25956 /*-----------------------------------------------------------------------
25957 Get message buffer
25958 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025959 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025960 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025961 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025962 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025963 {
25964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025965 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 pwdiPNOScanReqParams);
25967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025969 }
25970
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025971 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25972
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 /*-------------------------------------------------------------------------
25974 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25975 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025976 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025978 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025979 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25980
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025981 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025982 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025983 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025984 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025985 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25986
25987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025988 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025989 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25990 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25991 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25992
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025993 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025994 {
25995 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025996 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025997 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25998
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025999 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026000 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026001 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026002
26003 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026004 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026005 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026006
26007 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026008 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026009 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026010
26011 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026012 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026013 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026014
Jeff Johnsone7245742012-09-05 17:12:55 -070026015 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026016 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026017 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026018 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26019
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026020 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026021 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026022 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026023
26024 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026025 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026026 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26027
26028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026029 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026030 pPrefNetwListParams->aNetworks[i].ssId.length,
26031 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026032 }
26033
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026034 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026035 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026036 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26037 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26038 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26039
26040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026041 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026042 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26044 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26045
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026046 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026047 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026048 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026049 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026050 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026051 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26052 }
26053
26054 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026055 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026056 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26057 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26058 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026059 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026060
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026061 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026062 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026063 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026064
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026065 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026066 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26067 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26068 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026069 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026070
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026071 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026072 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026073 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026074
Jeff Johnson295189b2012-06-20 16:38:30 -070026075
26076 /*Set the output values*/
26077 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026078 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026079
26080 return WDI_STATUS_SUCCESS;
26081}/*WDI_PackPreferredNetworkListNew*/
26082
26083/**
26084 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026085
26086 @param pWDICtx: pointer to the WLAN DAL context
26087 pEventData: pointer to the event information structure
26088
Jeff Johnson295189b2012-06-20 16:38:30 -070026089 @return Result of the function call
26090*/
26091WDI_Status
26092WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026093(
Jeff Johnson295189b2012-06-20 16:38:30 -070026094 WDI_ControlBlockType* pWDICtx,
26095 WDI_EventInfoType* pEventData
26096)
26097{
26098 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26099 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026100 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026101 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026102 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026103
26104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026106 -------------------------------------------------------------------------*/
26107 if (( NULL == pEventData ) ||
26108 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26109 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26110 {
26111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026115 }
26116
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026117 /*----------------------------------------------------------------------
26118 Avoid Enable PNO during any active session or an ongoing session
26119 ----------------------------------------------------------------------*/
26120 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26121 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26122 {
26123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26124 "%s:(Active/Ongoing Session) - Fail request", __func__);
26125
26126 return WDI_STATUS_E_FAILURE;
26127 }
26128
Jeff Johnson295189b2012-06-20 16:38:30 -070026129 /*-------------------------------------------------------------------------
26130 Pack the PNO request structure based on version
26131 -------------------------------------------------------------------------*/
26132 if ( pWDICtx->wdiPNOVersion > 0 )
26133 {
26134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026135 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026136 pWDICtx->wdiPNOVersion);
26137
26138 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26139 &pSendBuffer, &usSendSize);
26140 }
26141 else
26142 {
26143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026144 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026145 pWDICtx->wdiPNOVersion);
26146
26147 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26148 &pSendBuffer, &usSendSize);
26149 }
26150
26151 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26152 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26153 {
26154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026155 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026157 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026158 }
26159
26160 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026161 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026162
26163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026164 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026165 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026166 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26167 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026168}
26169
26170/**
26171 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026172
26173 @param pWDICtx: pointer to the WLAN DAL context
26174 pEventData: pointer to the event information structure
26175
Jeff Johnson295189b2012-06-20 16:38:30 -070026176 @see
26177 @return Result of the function call
26178*/
26179WDI_Status
26180WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026181(
Jeff Johnson295189b2012-06-20 16:38:30 -070026182 WDI_ControlBlockType* pWDICtx,
26183 WDI_EventInfoType* pEventData
26184)
26185{
26186 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26187 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026188 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026189 wpt_uint16 usDataOffset = 0;
26190 wpt_uint16 usSendSize = 0;
26191 wpt_uint8 ucRssiThreshold;
26192
26193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026195 -------------------------------------------------------------------------*/
26196 if (( NULL == pEventData ) ||
26197 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26198 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26199 {
26200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026204 }
26205
26206 /*-----------------------------------------------------------------------
26207 Get message buffer
26208 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026210 sizeof(ucRssiThreshold),
26211 &pSendBuffer, &usDataOffset, &usSendSize))||
26212 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26213 {
26214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026215 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026216 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026219 }
26220
26221 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26222
Jeff Johnsone7245742012-09-05 17:12:55 -070026223 wpalMemoryCopy( pSendBuffer+usDataOffset,
26224 &ucRssiThreshold,
26225 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026226
26227 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026228 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026229
26230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026231 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26234 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026235}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026236#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26237/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026238 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026239
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026240 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026241 by the Device Interface
26242
26243 wdiRoamOffloadScancb: callback for passing back the response
26244 of the Roam Candidate Lookup Req operation received from the
26245 device
26246
26247 pUserData: user data will be passed back with the
26248 callback
26249 @return Result of the function call
26250*/
26251WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026252WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026253(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026254 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026255 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26256 void* pUserData
26257)
26258{
26259 WDI_EventInfoType wdiEventData = {{0}};
26260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26261
26262 /*------------------------------------------------------------------------
26263 Sanity Check
26264 ------------------------------------------------------------------------*/
26265 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26266 {
26267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26268 "WDI API call before module is initialized - Fail request");
26269
26270 return WDI_STATUS_E_NOT_ALLOWED;
26271 }
26272
26273 /*------------------------------------------------------------------------
26274 Fill in Event data and post to the Main FSM
26275 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026276 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26277 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26278 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026279 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26280 wdiEventData.pUserData = pUserData;
26281
26282 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26283}
26284
26285void
26286WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26287{
26288 switch (wdiEdType)
26289 {
26290 case WDI_ED_NONE:
26291 *EdType = eED_NONE;
26292 break;
26293 case WDI_ED_WEP40:
26294 case WDI_ED_WEP104:
26295 *EdType = eED_WEP;
26296 break;
26297 case WDI_ED_TKIP:
26298 *EdType = eED_TKIP;
26299 break;
26300 case WDI_ED_CCMP:
26301#ifdef WLAN_FEATURE_11W
26302 case WDI_ED_AES_128_CMAC:
26303#endif
26304 *EdType = eED_CCMP;
26305 break;
26306#ifdef FEATURE_WLAN_WAPI
26307 case WDI_ED_WPI:
26308 *EdType = eED_WPI;
26309 break;
26310#endif
26311 case WDI_ED_ANY:
26312 *EdType = eED_ANY;
26313 break;
26314
26315 default:
26316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26317 "%s: Unknown Encryption Type", __func__);
26318 break;
26319 }
26320}
26321
26322/**
26323 @brief Helper function to pack Start Roam Candidate Lookup
26324 Request parameters
26325
26326 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026327 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026328 from upper layers
26329 ppSendBuffer, pSize - out pointers of the packed buffer
26330 and its size
26331
26332 @return Result of the function call
26333*/
26334
26335WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026336WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026337(
26338 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026339 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026340 wpt_uint8** ppSendBuffer,
26341 wpt_uint16* pSize
26342)
26343{
26344 wpt_uint8* pSendBuffer = NULL;
26345 wpt_uint16 usDataOffset = 0;
26346 wpt_uint16 usSendSize = 0;
26347 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26348 wpt_uint8 i;
26349 /*-----------------------------------------------------------------------
26350 Get message buffer
26351 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026352 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026353 sizeof(tRoamCandidateListParams),
26354 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026355 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026356 {
26357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026358 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026359 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026360 WDI_ASSERT(0);
26361 return WDI_STATUS_E_FAILURE;
26362 }
26363 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026364 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026365 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026366 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026367 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026368 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026369 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026370 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026371 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026372 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026373 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026374
26375 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026376 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026377 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026378 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026379 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26380 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026381 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26382 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26383 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26384 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26385 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026386 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026387 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026388 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026389 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26390 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26391 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26392 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26393 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26394 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26395 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026396 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026397 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026398 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26399 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26400 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026401
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26403 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26404 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26405 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26406 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26407 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026408 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026409 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26410 pRoamCandidateListParams->RoamScanOffloadEnabled,
26411 pRoamCandidateListParams->Command,
26412 pRoamCandidateListParams->StartScanReason,
26413 pRoamCandidateListParams->NeighborScanTimerPeriod,
26414 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26415 pRoamCandidateListParams->NeighborScanChannelMinTime,
26416 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26417 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26418 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26419 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26420 pRoamCandidateListParams->ConnectedNetwork.authentication,
26421 pRoamCandidateListParams->ConnectedNetwork.encryption,
26422 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26423 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26424 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026425 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026426 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026427 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026428 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026429 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26430 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026431 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026432 pRoamCandidateListParams->us24GProbeSize);
26433 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026434 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026435 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026436 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026437 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26438 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026439 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026440 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026441 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26442 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26443 pRoamCandidateListParams->nProbes =
26444 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26445 pRoamCandidateListParams->HomeAwayTime =
26446 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026448 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26449 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026451 }
26452
26453
26454 /*Set the output values*/
26455 *ppSendBuffer = pSendBuffer;
26456 *pSize = usSendSize;
26457 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026458}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026459
26460/**
26461 @brief Process Start Roam Candidate Lookup Request function
26462
26463 @param pWDICtx: pointer to the WLAN DAL context
26464 pEventData: pointer to the event information structure
26465
26466 @return Result of the function call
26467*/
26468WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026469WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026470(
26471 WDI_ControlBlockType* pWDICtx,
26472 WDI_EventInfoType* pEventData
26473)
26474{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026475 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026476 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26477 wpt_uint8* pSendBuffer = NULL;
26478 wpt_uint16 usSendSize = 0;
26479 WDI_Status wdiStatus;
26480 /*-------------------------------------------------------------------------
26481 Sanity check
26482 -------------------------------------------------------------------------*/
26483 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026484 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026485 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26486 {
26487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26488 "%s: Invalid parameters", __func__);
26489 WDI_ASSERT(0);
26490 return WDI_STATUS_E_FAILURE;
26491 }
26492
26493 /*-------------------------------------------------------------------------
26494 Pack the Start Roam Candidate Lookup request structure based on version
26495 -------------------------------------------------------------------------*/
26496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26497 "%s: Packing Roam Candidate Lookup request ", __func__);
26498
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026499 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026500 &pSendBuffer, &usSendSize);
26501
26502 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26503 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26504 {
26505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26506 "%s: failed to pack request parameters", __func__);
26507 WDI_ASSERT(0);
26508 return wdiStatus;
26509 }
26510
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026511 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26512 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026513
26514 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026515 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026516 -------------------------------------------------------------------------*/
26517 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026518 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026519}
26520
26521/**
26522 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26523 response is being received over the bus from HAL)
26524
26525 @param pWDICtx: pointer to the WLAN DAL context
26526 pEventData: pointer to the event information structure
26527
26528 @see
26529 @return Result of the function call
26530*/
26531WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026532WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026533(
26534 WDI_ControlBlockType* pWDICtx,
26535 WDI_EventInfoType* pEventData
26536)
26537{
26538 WDI_Status wdiStatus;
26539 eHalStatus halStatus;
26540 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26541
26542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26543
26544 /*-------------------------------------------------------------------------
26545 Sanity check
26546 -------------------------------------------------------------------------*/
26547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26548 ( NULL == pEventData->pEventData ))
26549 {
26550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26551 "%s: Invalid parameters", __func__);
26552 WDI_ASSERT(0);
26553 return WDI_STATUS_E_FAILURE;
26554 }
26555
26556 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26557
26558 /*-------------------------------------------------------------------------
26559 Extract response and send it to UMAC
26560 -------------------------------------------------------------------------*/
26561 halStatus = *((eHalStatus*)pEventData->pEventData);
26562 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26563
26564 /*Notify UMAC*/
26565 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26566
26567 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026568}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026569#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026570
26571/**
26572 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026573
26574 @param pWDICtx: pointer to the WLAN DAL context
26575 pEventData: pointer to the event information structure
26576
Jeff Johnson295189b2012-06-20 16:38:30 -070026577 @see
26578 @return Result of the function call
26579*/
26580WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026581WDI_PackUpdateScanParamsReq
26582(
26583 WDI_ControlBlockType* pWDICtx,
26584 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26585 wpt_uint8** ppSendBuffer,
26586 wpt_uint16* pSize
26587)
26588{
26589 wpt_uint8* pSendBuffer = NULL;
26590 wpt_uint16 usDataOffset = 0;
26591 wpt_uint16 usSendSize = 0;
26592 tUpdateScanParams updateScanParams = {0};
26593
26594
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026596 "Begin WDI Update Scan Parameters Old Style Params");
26597 /*-----------------------------------------------------------------------
26598 Get message buffer
26599 -----------------------------------------------------------------------*/
26600 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26601 sizeof(updateScanParams),
26602 &pSendBuffer, &usDataOffset, &usSendSize))||
26603 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26604 {
26605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026606 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026607 pwdiUpdateScanParams);
26608 WDI_ASSERT(0);
26609 return WDI_STATUS_E_FAILURE;
26610 }
26611
26612 //
26613 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26614 //
26615
26616 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26617 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26618
26619 updateScanParams.ucChannelCount =
26620 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26621 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26622 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26623 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26624
26625 wpalMemoryCopy( updateScanParams.aChannels,
26626 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26627 updateScanParams.ucChannelCount);
26628
26629
26630 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26631 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26632 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26633 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26634 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26635
26636 wpalMemoryCopy( pSendBuffer+usDataOffset,
26637 &updateScanParams,
26638 sizeof(updateScanParams));
26639
26640 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26641 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26642
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026644 "End Update Scan Parameters Old Style");
26645
26646 /*Set the output values*/
26647 *ppSendBuffer = pSendBuffer;
26648 *pSize = usSendSize;
26649
26650 return WDI_STATUS_SUCCESS;
26651}
26652
26653/**
26654 @brief Process Update Scan Params function
26655
26656 @param pWDICtx: pointer to the WLAN DAL context
26657 pEventData: pointer to the event information structure
26658
26659 @see
26660 @return Result of the function call
26661*/
26662WDI_Status
26663WDI_PackUpdateScanParamsReqEx
26664(
26665 WDI_ControlBlockType* pWDICtx,
26666 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26667 wpt_uint8** ppSendBuffer,
26668 wpt_uint16* pSize
26669)
26670{
26671 wpt_uint8* pSendBuffer = NULL;
26672 wpt_uint16 usDataOffset = 0;
26673 wpt_uint16 usSendSize = 0;
26674 tUpdateScanParamsEx updateScanParams = {0};
26675
26676
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026677 /*-----------------------------------------------------------------------
26678 Get message buffer
26679 -----------------------------------------------------------------------*/
26680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26681 sizeof(updateScanParams),
26682 &pSendBuffer, &usDataOffset, &usSendSize))||
26683 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26684 {
26685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026686 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026687 pwdiUpdateScanParams);
26688 WDI_ASSERT(0);
26689 return WDI_STATUS_E_FAILURE;
26690 }
26691
26692 //
26693 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26694 //
26695
26696 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26697 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26698
26699 updateScanParams.ucChannelCount =
26700 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26701 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26702 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26703 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26704
26705 wpalMemoryCopy( updateScanParams.aChannels,
26706 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26707 updateScanParams.ucChannelCount);
26708
26709
26710 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26711 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26712 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26713 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26714 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26715
26716 wpalMemoryCopy( pSendBuffer+usDataOffset,
26717 &updateScanParams,
26718 sizeof(updateScanParams));
26719
26720 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26721 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26722
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026723 /*Set the output values*/
26724 *ppSendBuffer = pSendBuffer;
26725 *pSize = usSendSize;
26726
26727 return WDI_STATUS_SUCCESS;
26728}
26729
26730/**
26731 @brief Process Update Scan Params function
26732
26733 @param pWDICtx: pointer to the WLAN DAL context
26734 pEventData: pointer to the event information structure
26735
26736 @see
26737 @return Result of the function call
26738*/
26739WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026740WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026741(
Jeff Johnson295189b2012-06-20 16:38:30 -070026742 WDI_ControlBlockType* pWDICtx,
26743 WDI_EventInfoType* pEventData
26744)
26745{
26746 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26747 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026748 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026749 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026750 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026751
26752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026754 -------------------------------------------------------------------------*/
26755 if (( NULL == pEventData ) ||
26756 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26757 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26758 {
26759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026763 }
26764
26765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26766 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026767
26768 //
26769 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26770 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026771 if ( pWDICtx->wlanVersion.revision < 1 )
26772 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026773 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026774 &pSendBuffer, &usSendSize);
26775 }
26776 else
26777 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026778 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26779 &pSendBuffer, &usSendSize);
26780 }
26781
26782 if(WDI_STATUS_SUCCESS != wdiStatus)
26783 {
26784 //memory allocation failed
26785 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026786 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026787
Jeff Johnson295189b2012-06-20 16:38:30 -070026788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026789 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026790 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026791 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026792 wdiUpdateScanParamsCb, pEventData->pUserData,
26793 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026794}
26795
26796/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026797 @brief Process Update Channel Params function
26798
26799 @param pWDICtx: pointer to the WLAN DAL context
26800 pEventData: pointer to the event information structure
26801
26802 @see
26803 @return Result of the function call
26804*/
26805WDI_Status
26806WDI_ProcessUpdateChannelParamsReq
26807(
26808 WDI_ControlBlockType* pWDICtx,
26809 WDI_EventInfoType* pEventData
26810)
26811{
26812 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26813 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26814 wpt_uint8* pSendBuffer = NULL;
26815 wpt_uint16 usDataOffset = 0;
26816 wpt_uint16 usSendSize = 0;
26817 tUpdateChannelReqType *updateChannelParams;
26818 wpt_uint32 usUpdateChanParamSize;
26819 wpt_uint8 num_channels = 0;
26820
26821 /*-------------------------------------------------------------------------
26822 Sanity check
26823 -------------------------------------------------------------------------*/
26824 if (( NULL == pEventData ) ||
26825 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26826 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26827 {
26828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26829 "%s: Invalid parameters", __func__);
26830 WDI_ASSERT(0);
26831 return WDI_STATUS_E_FAILURE;
26832 }
26833 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026834 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026835
26836 /*-----------------------------------------------------------------------
26837 Get message buffer
26838 -----------------------------------------------------------------------*/
26839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26840 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26841 &pSendBuffer, &usDataOffset, &usSendSize))||
26842 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26843 {
26844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26845 "Unable to get send buffer in Update Channel Params req %p",
26846 pwdiUpdateChanListParams);
26847 WDI_ASSERT(0);
26848 return WDI_STATUS_E_FAILURE;
26849 }
26850 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26851
26852 updateChannelParams->numChan = num_channels;
26853 wpalMemoryCopy(&updateChannelParams->chanParam,
26854 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26855 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26856
26857 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26858 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26859
26860 /*-------------------------------------------------------------------------
26861 Send Update channel request to fw
26862 -------------------------------------------------------------------------*/
26863 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26864 wdiUpdateChanParamsCb, pEventData->pUserData,
26865 WDI_UPDATE_CHAN_RESP);
26866}
26867
26868/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026869 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026870
26871 @param pWDICtx: pointer to the WLAN DAL context
26872 pEventData: pointer to the event information structure
26873
Jeff Johnson295189b2012-06-20 16:38:30 -070026874 @see
26875 @return Result of the function call
26876*/
26877WDI_Status
26878WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026879(
Jeff Johnson295189b2012-06-20 16:38:30 -070026880 WDI_ControlBlockType* pWDICtx,
26881 WDI_EventInfoType* pEventData
26882)
26883{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026884 WDI_LowLevelIndType wdiInd;
26885 tpPrefNetwFoundParams pNetwFoundParams;
26886 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026887
26888
26889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026891 -------------------------------------------------------------------------*/
26892 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26893 ( NULL == pEventData->pEventData ))
26894 {
26895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026897 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026899 }
26900
26901 /*-------------------------------------------------------------------------
26902 Extract indication and send it to UMAC
26903 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026904 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26905
26906 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26907 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26908 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26909
26910 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26911 {
26912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26913 "%s: fail to allocate memory", __func__);
26914 return WDI_STATUS_MEM_FAILURE;
26915 }
26916
26917 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26918 (pNetwFoundParams->ssId.length < 32 )?
26919 pNetwFoundParams->ssId.length : 32;
26920 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26921 pNetwFoundParams->ssId.ssId,
26922 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26923 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26924 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26925 pNetwFoundParams->frameLength;
26926 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26927 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26928 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026929
26930 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026931 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026932
Jeff Johnson295189b2012-06-20 16:38:30 -070026933 // DEBUG
26934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026935 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026936 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026937 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026938 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026939 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026940 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26941
ltimariub77f24b2013-01-24 18:54:33 -080026942 if ( pWDICtx->wdiLowLevelIndCB )
26943 {
26944 /*Notify UMAC*/
26945 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26946 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026947
26948 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026949}
26950
26951/**
26952 @brief Process PNO Rsp function (called when a
26953 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026954
26955 @param pWDICtx: pointer to the WLAN DAL context
26956 pEventData: pointer to the event information structure
26957
Jeff Johnson295189b2012-06-20 16:38:30 -070026958 @see
26959 @return Result of the function call
26960*/
26961WDI_Status
26962WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026963(
Jeff Johnson295189b2012-06-20 16:38:30 -070026964 WDI_ControlBlockType* pWDICtx,
26965 WDI_EventInfoType* pEventData
26966)
26967{
26968 WDI_Status wdiStatus;
26969 eHalStatus halStatus;
26970 WDI_PNOScanCb wdiPNOScanCb = NULL;
26971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26972
26973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026975 -------------------------------------------------------------------------*/
26976 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26977 ( NULL == pEventData->pEventData ))
26978 {
26979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026983 }
26984
26985
Jeff Johnsone7245742012-09-05 17:12:55 -070026986 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026987
26988 /*-------------------------------------------------------------------------
26989 Extract response and send it to UMAC
26990 -------------------------------------------------------------------------*/
26991 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026992 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026993
26994 /*Notify UMAC*/
26995 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26996
Jeff Johnsone7245742012-09-05 17:12:55 -070026997 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026998}/*WDI_ProcessSetPreferredNetworkRsp*/
26999
27000/**
27001 @brief Process RSSI Filter Rsp function (called when a
27002 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027003
27004 @param pWDICtx: pointer to the WLAN DAL context
27005 pEventData: pointer to the event information structure
27006
Jeff Johnson295189b2012-06-20 16:38:30 -070027007 @see
27008 @return Result of the function call
27009*/
27010WDI_Status
27011WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027012(
Jeff Johnson295189b2012-06-20 16:38:30 -070027013 WDI_ControlBlockType* pWDICtx,
27014 WDI_EventInfoType* pEventData
27015)
27016{
27017 WDI_Status wdiStatus;
27018 eHalStatus halStatus;
27019 WDI_RssiFilterCb wdiRssiFilterCb;
27020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27021
27022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027024 -------------------------------------------------------------------------*/
27025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27026 ( NULL == pEventData->pEventData ))
27027 {
27028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027032 }
27033
Jeff Johnsone7245742012-09-05 17:12:55 -070027034 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027035
27036 /*-------------------------------------------------------------------------
27037 Extract response and send it to UMAC
27038 -------------------------------------------------------------------------*/
27039 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027040 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027041
27042 /*Notify UMAC*/
27043 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27044
Jeff Johnsone7245742012-09-05 17:12:55 -070027045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027046}/*WDI_ProcessSetRssiFilterRsp*/
27047
27048/**
27049 @brief Process Update Scan Params Rsp function (called when a
27050 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027051
27052 @param pWDICtx: pointer to the WLAN DAL context
27053 pEventData: pointer to the event information structure
27054
Jeff Johnson295189b2012-06-20 16:38:30 -070027055 @see
27056 @return Result of the function call
27057*/
27058WDI_Status
27059WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027060(
Jeff Johnson295189b2012-06-20 16:38:30 -070027061 WDI_ControlBlockType* pWDICtx,
27062 WDI_EventInfoType* pEventData
27063)
27064{
27065 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027066 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027067 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027068 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27070
27071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027073 -------------------------------------------------------------------------*/
27074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27075 ( NULL == pEventData->pEventData ))
27076 {
27077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027081 }
27082
27083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027084 "%s: Process UPD scan params ptr : %p",
27085 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027086
Jeff Johnsone7245742012-09-05 17:12:55 -070027087 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027088
27089 /*-------------------------------------------------------------------------
27090 Extract response and send it to UMAC
27091 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027092 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27093 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027094 sizeof(halUpdScanParams.status));
27095
27096 uStatus = halUpdScanParams.status;
27097
27098 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027099 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027100
27101 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027102 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027103
Jeff Johnsone7245742012-09-05 17:12:55 -070027104 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027105
27106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027107 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027108 halUpdScanParams.status);
27109
27110 /*Notify UMAC*/
27111 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27112
Jeff Johnsone7245742012-09-05 17:12:55 -070027113 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027114}
27115#endif // FEATURE_WLAN_SCAN_PNO
27116
27117#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027118WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027119WDI_8023MulticastListReq
27120(
27121 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27122 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27123 void* pUserData
27124)
27125{
27126 WDI_EventInfoType wdiEventData;
27127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27128
27129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027130 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027131
27132 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027133 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027134 ------------------------------------------------------------------------*/
27135 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27136 {
27137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27138 "WDI API call before module is initialized - Fail request");
27139
Jeff Johnsone7245742012-09-05 17:12:55 -070027140 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027141 }
27142
27143 /*------------------------------------------------------------------------
27144 Fill in Event data and post to the Main FSM
27145 ------------------------------------------------------------------------*/
27146 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027147 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027148 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027149 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027150 wdiEventData.pUserData = pUserData;
27151
27152 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27153}
27154
Jeff Johnsone7245742012-09-05 17:12:55 -070027155WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027156WDI_ReceiveFilterSetFilterReq
27157(
27158 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27159 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27160 void* pUserData
27161)
27162{
27163 WDI_EventInfoType wdiEventData;
27164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27165
27166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027167 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027168
27169 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027170 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027171 ------------------------------------------------------------------------*/
27172 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27173 {
27174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27175 "WDI API call before module is initialized - Fail request");
27176
Jeff Johnsone7245742012-09-05 17:12:55 -070027177 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027178 }
27179
27180 /*------------------------------------------------------------------------
27181 Fill in Event data and post to the Main FSM
27182 ------------------------------------------------------------------------*/
27183 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027184 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27185 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027186 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27187 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027188 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027189 wdiEventData.pUserData = pUserData;
27190
27191
27192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27193}
27194
Jeff Johnsone7245742012-09-05 17:12:55 -070027195WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027196WDI_FilterMatchCountReq
27197(
27198 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27199 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27200 void* pUserData
27201)
27202{
27203 WDI_EventInfoType wdiEventData;
27204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27205
27206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027207 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027208
27209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027211 ------------------------------------------------------------------------*/
27212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27213 {
27214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27215 "WDI API call before module is initialized - Fail request");
27216
Jeff Johnsone7245742012-09-05 17:12:55 -070027217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027218 }
27219
27220 /*------------------------------------------------------------------------
27221 Fill in Event data and post to the Main FSM
27222 ------------------------------------------------------------------------*/
27223 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027224 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027225 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027226 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027227 wdiEventData.pUserData = pUserData;
27228
27229
27230 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27231}
27232
Jeff Johnsone7245742012-09-05 17:12:55 -070027233WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027234WDI_ReceiveFilterClearFilterReq
27235(
27236 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27237 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27238 void* pUserData
27239)
27240{
27241 WDI_EventInfoType wdiEventData;
27242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27243
27244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027245 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027246
27247 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027248 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027249 ------------------------------------------------------------------------*/
27250 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27251 {
27252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27253 "WDI API call before module is initialized - Fail request");
27254
Jeff Johnsone7245742012-09-05 17:12:55 -070027255 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027256 }
27257
27258 /*------------------------------------------------------------------------
27259 Fill in Event data and post to the Main FSM
27260 ------------------------------------------------------------------------*/
27261 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027262 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027263 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027264 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027265 wdiEventData.pUserData = pUserData;
27266
27267
27268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27269}
27270
27271/**
27272 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027273
27274 @param pWDICtx: pointer to the WLAN DAL context
27275 pEventData: pointer to the event information structure
27276
Jeff Johnson295189b2012-06-20 16:38:30 -070027277 @see
27278 @return Result of the function call
27279*/
27280WDI_Status
27281WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027282(
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 WDI_ControlBlockType* pWDICtx,
27284 WDI_EventInfoType* pEventData
27285)
27286{
27287 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27288 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027289 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027290 wpt_uint16 usDataOffset = 0;
27291 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027292 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027293 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027294 wpt_uint8 ucCurrentBSSSesIdx = 0;
27295 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027296
27297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027298 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027299
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027300 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27301 if( NULL == pRcvFltMcAddrListType )
27302 {
27303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27304 "Failed to alloc in WDI_Process8023MulticastListReq");
27305 return WDI_STATUS_E_FAILURE;
27306 }
27307
Jeff Johnson295189b2012-06-20 16:38:30 -070027308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027310 -------------------------------------------------------------------------*/
27311 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027312 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027313 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027314 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027315 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27316 {
27317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027318 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027319 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027321 return WDI_STATUS_E_FAILURE;
27322 }
27323
27324 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27325 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27326 &pBSSSes);
27327 if ( NULL == pBSSSes )
27328 {
27329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027330 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027331 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027333 }
27334
27335 /*-----------------------------------------------------------------------
27336 Get message buffer
27337 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027338 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27339 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027340 sizeof(tHalRcvFltMcAddrListType),
27341 &pSendBuffer, &usDataOffset, &usSendSize))||
27342 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27343 {
27344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27345 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027346 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027347 pEventData, pwdiFltPktSetMcListReqParamsType,
27348 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027349 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027352 }
27353
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027354 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027355 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027356 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027357 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027358 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027359 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27360 sizeof(tSirMacAddr));
27361 }
27362
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027363 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027364 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027365 pRcvFltMcAddrListType,
27366 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027367
27368 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027369 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027370
27371
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027372 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027374 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027375 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027376 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027377 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027378 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027379}
27380
27381/**
27382 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027383
27384 @param pWDICtx: pointer to the WLAN DAL context
27385 pEventData: pointer to the event information structure
27386
Jeff Johnson295189b2012-06-20 16:38:30 -070027387 @see
27388 @return Result of the function call
27389*/
27390WDI_Status
27391WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027392(
Jeff Johnson295189b2012-06-20 16:38:30 -070027393 WDI_ControlBlockType* pWDICtx,
27394 WDI_EventInfoType* pEventData
27395)
27396{
27397 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27398 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027399 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027400 wpt_uint16 usDataOffset = 0;
27401 wpt_uint16 usSendSize = 0;
27402 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027403 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027404 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027405 wpt_uint8 ucCurrentBSSSesIdx = 0;
27406 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027407 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27408 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027409
27410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027411 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027412
27413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027415 -------------------------------------------------------------------------*/
27416 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027417 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027418 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027419 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027420 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27421 {
27422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027425 return WDI_STATUS_E_FAILURE;
27426 }
27427
27428 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27429 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27430 &pBSSSes);
27431 if ( NULL == pBSSSes )
27432 {
27433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027434 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027435 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027436 }
27437
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027438 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27439 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027440
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027441 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27442 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27443 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27444
27445 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27446 usSessRcvPktFilterCfgSize);
27447
27448 if(NULL == pSessRcvPktFilterCfg)
27449 {
27450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27451 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027452 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027453 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027454 WDI_ASSERT(0);
27455 return WDI_STATUS_E_FAILURE;
27456 }
27457
27458 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27459
27460 /*-----------------------------------------------------------------------
27461 Get message buffer
27462 -----------------------------------------------------------------------*/
27463
27464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27465 usSessRcvPktFilterCfgSize,
27466 &pSendBuffer, &usDataOffset, &usSendSize))||
27467 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27468 {
27469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27470 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027471 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027472 pEventData, pwdiSetRcvPktFilterReqInfo,
27473 wdiReceiveFilterSetFilterCb);
27474 WDI_ASSERT(0);
27475 wpalMemoryFree(pSessRcvPktFilterCfg);
27476 return WDI_STATUS_E_FAILURE;
27477 }
27478
27479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027480 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027481 usSendSize,pSessRcvPktFilterCfg);
27482
27483 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27484 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27485 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27486 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27487
27488 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27489
27490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27491 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27492 pSessRcvPktFilterCfg->filterType);
27493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27494 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27495 pSessRcvPktFilterCfg->coleasceTime);
27496
27497 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27498 {
27499 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27500 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27501 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27502 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27503 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27504 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27505 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27506 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27507
27508 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27509 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27510 8);
27511 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27512 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27513 8);
27514
27515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027516 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027517 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27518 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27519
27520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027521 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027522 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27523 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27524
27525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027526 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027527 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27528 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27529 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27530 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27531 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27532 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27533
27534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027535 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027536 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27537 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27538 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27539 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27540 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27541 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27542 }
27543
27544 wpalMemoryCopy( pSendBuffer+usDataOffset,
27545 pSessRcvPktFilterCfg,
27546 usSessRcvPktFilterCfgSize);
27547
27548
27549 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27550 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27551
27552 wpalMemoryFree(pSessRcvPktFilterCfg);
27553
27554 }
27555 /*If SLM_SESSIONIZATION is not supported then do this */
27556 else
27557 {
27558 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27559 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27560 * sizeof(tHalRcvPktFilterParams));
27561
27562 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027563 usRcvPktFilterCfgSize);
27564
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027565 if(NULL == pRcvPktFilterCfg)
27566 {
27567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27568 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027569 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027570 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027571 WDI_ASSERT(0);
27572 return WDI_STATUS_E_FAILURE;
27573 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027574
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027575 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027576
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027577 /*-----------------------------------------------------------------------
27578 Get message buffer
27579 -----------------------------------------------------------------------*/
27580 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027581 usRcvPktFilterCfgSize,
27582 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027583 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27584 {
27585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027586 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027587 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027588 pEventData, pwdiSetRcvPktFilterReqInfo,
27589 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027590 WDI_ASSERT(0);
27591 wpalMemoryFree(pRcvPktFilterCfg);
27592 return WDI_STATUS_E_FAILURE;
27593 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027594
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027596 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027597 usSendSize,usRcvPktFilterCfgSize);
27598
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027599 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27600 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27601 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27602 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027603
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027605 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027606 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027608 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027609 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027610
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027611 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27612 {
27613 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27614 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27615 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27616 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27617 pRcvPktFilterCfg->paramsData[i].dataOffset =
27618 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27619 pRcvPktFilterCfg->paramsData[i].dataLength =
27620 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027621
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027622 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027623 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27624 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027625 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027626 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27627 8);
27628
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027630 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027631 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027632 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27633
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027635 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027636 pRcvPktFilterCfg->paramsData[i].dataOffset,
27637 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027638
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027640 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027641 pRcvPktFilterCfg->paramsData[i].compareData[0],
27642 pRcvPktFilterCfg->paramsData[i].compareData[1],
27643 pRcvPktFilterCfg->paramsData[i].compareData[2],
27644 pRcvPktFilterCfg->paramsData[i].compareData[3],
27645 pRcvPktFilterCfg->paramsData[i].compareData[4],
27646 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027647
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027649 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027650 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27651 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27652 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27653 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27654 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27655 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27656 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027657
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027658 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027659 pRcvPktFilterCfg,
27660 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027661
27662
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027663 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27664 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027665
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027667 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027668 wpalMemoryFree(pRcvPktFilterCfg);
27669 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027671 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027672 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027673 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027674 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027675 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027676}
27677
27678/**
27679 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027680
27681 @param pWDICtx: pointer to the WLAN DAL context
27682 pEventData: pointer to the event information structure
27683
Jeff Johnson295189b2012-06-20 16:38:30 -070027684 @see
27685 @return Result of the function call
27686*/
27687WDI_Status
27688WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027689(
Jeff Johnson295189b2012-06-20 16:38:30 -070027690 WDI_ControlBlockType* pWDICtx,
27691 WDI_EventInfoType* pEventData
27692)
27693{
27694 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27695 NULL;
27696 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27697 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027699 wpt_uint16 usDataOffset = 0;
27700 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027701 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27702 wpt_uint8 ucCurrentBSSSesIdx = 0;
27703 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027704
27705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027706 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027707
27708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027709 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027710 -------------------------------------------------------------------------*/
27711 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027712 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027713 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027714 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027715 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27716 {
27717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027721 }
27722
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027723 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27724 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27725 &pBSSSes);
27726 if ( NULL == pBSSSes )
27727 {
27728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027729 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027730 return WDI_STATUS_E_FAILURE;
27731 }
27732
Jeff Johnson295189b2012-06-20 16:38:30 -070027733 /*-----------------------------------------------------------------------
27734 Get message buffer
27735 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027736 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27737 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027738 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027739 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027740 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027741 {
27742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27743 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027744 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027745 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27746 wdiFilterMatchCountCb);
27747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027749 }
27750
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027751 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27752 wpalMemoryCopy( pSendBuffer+usDataOffset,
27753 &rcvFltPktMatchCntReqParam,
27754 sizeof(rcvFltPktMatchCntReqParam));
27755
Jeff Johnson295189b2012-06-20 16:38:30 -070027756 //
27757 // Don't need to fill send buffer other than header
27758 //
27759 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027760 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027761
27762
27763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027764 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27767 wdiFilterMatchCountCb,
27768 pEventData->pUserData,
27769 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027770}
27771
27772/**
27773 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027774
27775 @param pWDICtx: pointer to the WLAN DAL context
27776 pEventData: pointer to the event information structure
27777
Jeff Johnson295189b2012-06-20 16:38:30 -070027778 @see
27779 @return Result of the function call
27780*/
27781WDI_Status
27782WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027783(
Jeff Johnson295189b2012-06-20 16:38:30 -070027784 WDI_ControlBlockType* pWDICtx,
27785 WDI_EventInfoType* pEventData
27786)
Jeff Johnsone7245742012-09-05 17:12:55 -070027787{
Jeff Johnson295189b2012-06-20 16:38:30 -070027788 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27789 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027790 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027791 wpt_uint16 usDataOffset = 0;
27792 wpt_uint16 usSendSize = 0;
27793 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027794 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027795 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027796
27797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027798 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027799
27800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027802 -------------------------------------------------------------------------*/
27803 if (( NULL == pEventData ) ||
27804 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27805 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027806 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027807 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27808 {
27809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027810 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027812 return WDI_STATUS_E_FAILURE;
27813 }
27814
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027815 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027816 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27817 &pBSSSes);
27818 if ( NULL == pBSSSes )
27819 {
27820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027821 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027823 }
27824
27825 /*-----------------------------------------------------------------------
27826 Get message buffer
27827 -----------------------------------------------------------------------*/
27828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027829 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027830 sizeof(tHalRcvFltPktClearParam),
27831 &pSendBuffer, &usDataOffset, &usSendSize))||
27832 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27833 {
27834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27835 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027836 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027837 pEventData, pwdiRcvFltPktClearReqParamsType,
27838 wdiRcvFltPktClearFilterCb);
27839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027841 }
27842
27843
27844 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027845 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027846 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027847 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027848
Jeff Johnsone7245742012-09-05 17:12:55 -070027849 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27850 wpalMemoryCopy( pSendBuffer+usDataOffset,
27851 &rcvFltPktClearParam,
27852 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027853
27854 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027855 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027856
27857
27858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027859 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027860 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027861 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027862 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027863 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027864}
27865
27866/**
27867 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027868
27869 @param pWDICtx: pointer to the WLAN DAL context
27870 pEventData: pointer to the event information structure
27871
Jeff Johnson295189b2012-06-20 16:38:30 -070027872 @see
27873 @return Result of the function call
27874*/
27875WDI_Status
27876WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027877(
Jeff Johnson295189b2012-06-20 16:38:30 -070027878 WDI_ControlBlockType* pWDICtx,
27879 WDI_EventInfoType* pEventData
27880)
27881{
Jeff Johnson295189b2012-06-20 16:38:30 -070027882 eHalStatus halStatus;
27883 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027884 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27885 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27887
27888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027889 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027890
27891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027893 -------------------------------------------------------------------------*/
27894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27895 ( NULL == pEventData->pEventData ))
27896 {
27897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027901 }
27902
Jeff Johnsone7245742012-09-05 17:12:55 -070027903 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027904
27905 /*-------------------------------------------------------------------------
27906 Extract response and send it to UMAC
27907 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027908 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27909 {
27910 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27911 pEventData->pEventData,
27912 sizeof(halRcvFltPktSetMcListRsp));
27913
27914 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27915 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27916 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27917 halRcvFltPktSetMcListRsp.bssIdx;
27918 }
27919 else
27920 {
27921 halStatus = *((eHalStatus*)pEventData->pEventData);
27922 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27923 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027924
27925 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027926 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027927
Jeff Johnsone7245742012-09-05 17:12:55 -070027928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027929}
27930
27931/**
27932 @brief Process Set Rsp function (called when a
27933 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027934
27935 @param pWDICtx: pointer to the WLAN DAL context
27936 pEventData: pointer to the event information structure
27937
Jeff Johnson295189b2012-06-20 16:38:30 -070027938 @see
27939 @return Result of the function call
27940*/
27941WDI_Status
27942WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027943(
Jeff Johnson295189b2012-06-20 16:38:30 -070027944 WDI_ControlBlockType* pWDICtx,
27945 WDI_EventInfoType* pEventData
27946)
27947{
Jeff Johnson295189b2012-06-20 16:38:30 -070027948 eHalStatus halStatus;
27949 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027950 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27951 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27953
27954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027955 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027956
27957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027959 -------------------------------------------------------------------------*/
27960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27961 ( NULL == pEventData->pEventData ))
27962 {
27963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027967 }
27968
27969 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027970 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027971
27972 /*-------------------------------------------------------------------------
27973 Extract response and send it to UMAC
27974 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027975 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27976 {
27977 wpalMemoryCopy( &halSetPktFilterRspParams,
27978 pEventData->pEventData,
27979 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027980
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027981 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27982 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27983 }
27984 else
27985 {
27986 halStatus = *((eHalStatus*)pEventData->pEventData);
27987 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27988 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027989 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027990 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027991
Jeff Johnsone7245742012-09-05 17:12:55 -070027992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027993}
27994
27995/**
27996 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027997
27998 @param pWDICtx: pointer to the WLAN DAL context
27999 pEventData: pointer to the event information structure
28000
Jeff Johnson295189b2012-06-20 16:38:30 -070028001 @see
28002 @return Result of the function call
28003*/
28004WDI_Status
28005WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028006(
Jeff Johnson295189b2012-06-20 16:38:30 -070028007 WDI_ControlBlockType* pWDICtx,
28008 WDI_EventInfoType* pEventData
28009)
28010{
Jeff Johnson295189b2012-06-20 16:38:30 -070028011 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028012 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028013 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28014 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028015
28016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28017
28018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028019 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028020
28021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028023 -------------------------------------------------------------------------*/
28024 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28025 ( NULL == pEventData->pEventData ))
28026 {
28027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028031 }
28032
Jeff Johnsone7245742012-09-05 17:12:55 -070028033 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028034
28035 /*-------------------------------------------------------------------------
28036 Extract response and send it to UMAC
28037 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028038 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28039 {
28040 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28041 pEventData->pEventData,
28042 sizeof(halRcvFltrPktMatachRsp));
28043
28044 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28045 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28046 }
28047 else
28048 {
28049 halStatus = *((eHalStatus*)pEventData->pEventData);
28050 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28051 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028052
28053 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028054 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028055
Jeff Johnsone7245742012-09-05 17:12:55 -070028056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028057}
28058
28059/**
28060 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028061
28062 @param pWDICtx: pointer to the WLAN DAL context
28063 pEventData: pointer to the event information structure
28064
Jeff Johnson295189b2012-06-20 16:38:30 -070028065 @see
28066 @return Result of the function call
28067*/
28068WDI_Status
28069WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028070(
Jeff Johnson295189b2012-06-20 16:38:30 -070028071 WDI_ControlBlockType* pWDICtx,
28072 WDI_EventInfoType* pEventData
28073)
28074{
Jeff Johnson295189b2012-06-20 16:38:30 -070028075 eHalStatus halStatus;
28076 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028077 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28078 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28080
28081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028082 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028083
28084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028086 -------------------------------------------------------------------------*/
28087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28088 ( NULL == pEventData->pEventData ))
28089 {
28090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028094 }
28095
28096 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028097 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028098
28099 /*-------------------------------------------------------------------------
28100 Extract response and send it to UMAC
28101 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028102 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28103 {
28104 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28105 pEventData->pEventData,
28106 sizeof(halRcvFltPktClearRspMsg));
28107
28108 wdiRcvFltPktClearRspParamsType.wdiStatus =
28109 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28110 wdiRcvFltPktClearRspParamsType.bssIdx =
28111 halRcvFltPktClearRspMsg.bssIdx;
28112 }
28113 else
28114 {
28115 halStatus = *((eHalStatus*)pEventData->pEventData);
28116 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28117 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028118
28119 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028120 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028121
Jeff Johnsone7245742012-09-05 17:12:55 -070028122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028123}
28124#endif // WLAN_FEATURE_PACKET_FILTERING
28125
28126/**
28127 @brief Process Shutdown Rsp function
28128 There is no shutdown response comming from HAL
28129 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028130
Jeff Johnson295189b2012-06-20 16:38:30 -070028131 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028132 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028133
28134 @see
28135 @return Result of the function call
28136*/
28137WDI_Status
28138WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028139(
Jeff Johnson295189b2012-06-20 16:38:30 -070028140 WDI_ControlBlockType* pWDICtx,
28141 WDI_EventInfoType* pEventData
28142)
28143{
28144 /*There is no shutdown response comming from HAL - function just kept for
28145 simmetry */
28146 WDI_ASSERT(0);
28147 return WDI_STATUS_SUCCESS;
28148}/*WDI_ProcessShutdownRsp*/
28149
28150/**
28151 @brief WDI_SetPowerParamsReq
28152
Jeff Johnsone7245742012-09-05 17:12:55 -070028153 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028154 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028155
Jeff Johnson295189b2012-06-20 16:38:30 -070028156 wdiPowerParamsCb: callback for passing back the response
28157 of the Set Power Params operation received from the
28158 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028159
Jeff Johnson295189b2012-06-20 16:38:30 -070028160 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028161 callback
28162
Jeff Johnson295189b2012-06-20 16:38:30 -070028163 @return Result of the function call
28164*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028165WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028166WDI_SetPowerParamsReq
28167(
28168 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28169 WDI_SetPowerParamsCb wdiPowerParamsCb,
28170 void* pUserData
28171)
28172{
28173 WDI_EventInfoType wdiEventData;
28174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28175
28176 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028177 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028178 ------------------------------------------------------------------------*/
28179 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28180 {
28181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28182 "WDI API call before module is initialized - Fail request");
28183
Jeff Johnsone7245742012-09-05 17:12:55 -070028184 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028185 }
28186
28187 /*------------------------------------------------------------------------
28188 Fill in Event data and post to the Main FSM
28189 ------------------------------------------------------------------------*/
28190 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028191 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028192 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028193 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028194 wdiEventData.pUserData = pUserData;
28195
28196 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28197}/*WDI_SetPowerParamsReq*/
28198
28199/**
28200 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028201
28202 @param pWDICtx: pointer to the WLAN DAL context
28203 pEventData: pointer to the event information structure
28204
Jeff Johnson295189b2012-06-20 16:38:30 -070028205 @see
28206 @return Result of the function call
28207*/
28208WDI_Status
28209WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028210(
Jeff Johnson295189b2012-06-20 16:38:30 -070028211 WDI_ControlBlockType* pWDICtx,
28212 WDI_EventInfoType* pEventData
28213)
28214{
28215 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28216 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028217 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028218 wpt_uint16 usDataOffset = 0;
28219 wpt_uint16 usSendSize = 0;
28220 tSetPowerParamsType powerParams;
28221
28222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028224 -------------------------------------------------------------------------*/
28225 if (( NULL == pEventData ) ||
28226 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28227 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28228 {
28229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028230 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028233 }
28234
28235 /*-----------------------------------------------------------------------
28236 Get message buffer
28237 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028239 sizeof(powerParams),
28240 &pSendBuffer, &usDataOffset, &usSendSize))||
28241 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28242 {
28243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028244 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028245 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028248 }
28249
28250 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028251 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028252 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28253
28254 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028255 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028256 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28257
28258 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028259 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028260 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28261
28262 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028263 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028264 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28265
28266 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028267 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028268 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28269
28270 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028271 powerParams.uBETInterval =
28272 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028273
Yue Mac24062f2013-05-13 17:01:29 -070028274 /* MAX LI for modulated DTIM */
28275 powerParams.uMaxLIModulatedDTIM =
28276 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028277
28278 wpalMemoryCopy( pSendBuffer+usDataOffset,
28279 &powerParams,
28280 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028281
28282 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028283 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028284
28285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028286 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028287 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028288 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28289 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028290}
28291
28292/**
28293 @brief Process Power Params Rsp function (called when a
28294 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028295
28296 @param pWDICtx: pointer to the WLAN DAL context
28297 pEventData: pointer to the event information structure
28298
Jeff Johnson295189b2012-06-20 16:38:30 -070028299 @see
28300 @return Result of the function call
28301*/
28302WDI_Status
28303WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028304(
Jeff Johnson295189b2012-06-20 16:38:30 -070028305 WDI_ControlBlockType* pWDICtx,
28306 WDI_EventInfoType* pEventData
28307)
28308{
28309 WDI_Status wdiStatus;
28310 eHalStatus halStatus;
28311 WDI_SetPowerParamsCb wdiPowerParamsCb;
28312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28313
28314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028316 -------------------------------------------------------------------------*/
28317 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28318 ( NULL == pEventData->pEventData ))
28319 {
28320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028324 }
28325
Jeff Johnsone7245742012-09-05 17:12:55 -070028326 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028327
28328 /*-------------------------------------------------------------------------
28329 Extract response and send it to UMAC
28330 -------------------------------------------------------------------------*/
28331 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028332 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028333
28334 /*Notify UMAC*/
28335 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28336
Jeff Johnsone7245742012-09-05 17:12:55 -070028337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028338}/*WDI_ProcessSetPowerParamsRsp*/
28339
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028340/**
28341 @brief WDI_dhcpStartInd
28342 Host will send an event to the FW when DHCP is initiated
28343
28344 @param
28345 WDI_DHCPInd: DHCP Indication
28346 @see
28347 @return Result of the function call
28348*/
28349WDI_Status
28350WDI_dhcpStartInd
28351(
28352 WDI_DHCPInd *wdiDHCPInd
28353)
28354{
28355 WDI_EventInfoType wdiEventData;
28356
28357 /*------------------------------------------------------------------------
28358 Sanity Check
28359 ------------------------------------------------------------------------*/
28360 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28361 {
28362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28363 "WDI API call before module is initialized - Fail request");
28364
28365 return WDI_STATUS_E_NOT_ALLOWED;
28366 }
28367
28368 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28369 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028370 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028371 wdiEventData.pCBfnc = NULL;
28372 wdiEventData.pUserData = NULL;
28373
28374 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28375}
28376
28377
28378/**
28379 @brief WDI_dhcpStopInd
28380 Host will send an event to the FW when DHCP is completed
28381
28382 @param
28383 WDI_DHCPInd: DHCP Indication
28384 @see
28385 @return Result of the function call
28386*/
28387WDI_Status
28388WDI_dhcpStopInd
28389(
28390 WDI_DHCPInd *wdiDHCPInd
28391)
28392{
28393 WDI_EventInfoType wdiEventData;
28394
28395 /*------------------------------------------------------------------------
28396 Sanity Check
28397 ------------------------------------------------------------------------*/
28398 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28399 {
28400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28401 "WDI API call before module is initialized - Fail request");
28402
28403 return WDI_STATUS_E_NOT_ALLOWED;
28404 }
28405
28406 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28407 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028408 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028409 wdiEventData.pCBfnc = NULL;
28410 wdiEventData.pUserData = NULL;
28411
28412 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28413}
28414
28415
28416/**
28417 @brief Process DHCP Start Indication message and post it to HAL
28418
28419 @param pWDICtx: pointer to the WLAN DAL context
28420 pEventData: pointer to the event information structure
28421
28422 @see
28423 @return Result of the function call
28424*/
28425WDI_Status
28426WDI_ProcessDHCPStartInd
28427(
28428 WDI_ControlBlockType* pWDICtx,
28429 WDI_EventInfoType* pEventData
28430)
28431{
28432 wpt_uint8* pSendBuffer = NULL;
28433 wpt_uint16 usDataOffset = 0;
28434 wpt_uint16 usSendSize = 0;
28435 wpt_uint16 usLen = 0;
28436 WDI_DHCPInd* pwdiDHCPInd = NULL;
28437 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028438 WDI_Status wdiStatus;
28439
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028440
28441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28442
28443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28444 "%s", __func__);
28445
28446 /*-------------------------------------------------------------------------
28447 Sanity check
28448 -------------------------------------------------------------------------*/
28449 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28450 {
28451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28452 "%s: Invalid parameters", __func__);
28453 WDI_ASSERT(0);
28454 return WDI_STATUS_E_FAILURE;
28455 }
28456 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28457 /*-----------------------------------------------------------------------
28458 Get message buffer
28459 -----------------------------------------------------------------------*/
28460
28461 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28462 WDI_DHCP_START_IND,
28463 sizeof(tDHCPInfo),
28464 &pSendBuffer, &usDataOffset, &usSendSize))||
28465 ( usSendSize < (usDataOffset + usLen )))
28466 {
28467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28468 "Unable to get send buffer in DHCP Start req %p ",
28469 pEventData);
28470 WDI_ASSERT(0);
28471 return WDI_STATUS_E_FAILURE;
28472 }
28473
Sandeep Puligillaee789512014-02-13 19:14:52 +053028474 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028475 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28476 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28477 WDI_MAC_ADDR_LEN);
28478
28479 pWDICtx->pReqStatusUserData = NULL;
28480 pWDICtx->pfncRspCB = NULL;
28481
28482 /*-------------------------------------------------------------------------
28483 Send DHCP Start Indication to HAL
28484 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028485 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28486 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028487}/*WDI_ProcessDHCPStartInd*/
28488
28489/**
28490 @brief Process DHCP Stop indication message and post it to HAL
28491
28492 @param pWDICtx: pointer to the WLAN DAL context
28493 pEventData: pointer to the event information structure
28494
28495 @see
28496 @return Result of the function call
28497*/
28498WDI_Status
28499WDI_ProcessDHCPStopInd
28500(
28501 WDI_ControlBlockType* pWDICtx,
28502 WDI_EventInfoType* pEventData
28503)
28504{
28505 wpt_uint8* pSendBuffer = NULL;
28506 wpt_uint16 usDataOffset = 0;
28507 wpt_uint16 usSendSize = 0;
28508 wpt_uint16 usLen = 0;
28509 WDI_DHCPInd* pwdiDHCPInd = NULL;
28510 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028511 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028512
28513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28514
28515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28516 "%s", __func__);
28517
28518 /*-------------------------------------------------------------------------
28519 Sanity check
28520 -------------------------------------------------------------------------*/
28521
28522 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28523 {
28524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28525 "%s: Invalid parameters", __func__);
28526 WDI_ASSERT(0);
28527 return WDI_STATUS_E_FAILURE;
28528 }
28529 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28530 /*-----------------------------------------------------------------------
28531 Get message buffer
28532 -----------------------------------------------------------------------*/
28533
28534 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28535 WDI_DHCP_STOP_IND,
28536 sizeof(tDHCPInfo),
28537 &pSendBuffer, &usDataOffset, &usSendSize))||
28538 ( usSendSize < (usDataOffset + usLen )))
28539 {
28540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28541 "Unable to get send buffer in DHCP Start req %p ",
28542 pEventData);
28543 WDI_ASSERT(0);
28544 return WDI_STATUS_E_FAILURE;
28545 }
28546
Sandeep Puligillaee789512014-02-13 19:14:52 +053028547 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028548 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28549 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28550 WDI_MAC_ADDR_LEN);
28551
28552 pWDICtx->pReqStatusUserData = NULL;
28553 pWDICtx->pfncRspCB = NULL;
28554 /*-------------------------------------------------------------------------
28555 Send DHCP Stop indication to HAL
28556 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028557 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28558 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028559
28560}/*WDI_ProcessDHCPStopInd*/
28561
28562
Jeff Johnson295189b2012-06-20 16:38:30 -070028563#ifdef WLAN_FEATURE_GTK_OFFLOAD
28564/**
28565 @brief WDI_GTKOffloadReq will be called when the upper MAC
28566 wants to set GTK Rekey Counter while in power save. Upon
28567 the call of this API the WLAN DAL will pack and send a
28568 HAL GTK offload request message to the lower RIVA
28569 sub-system if DAL is in state STARTED.
28570
28571 In state BUSY this request will be queued. Request won't
28572 be allowed in any other state.
28573
28574 WDI_PostAssocReq must have been called.
28575
28576 @param pwdiGtkOffloadParams: the GTK offload as specified
28577 by the Device Interface
28578
28579 wdiGtkOffloadCb: callback for passing back the response
28580 of the GTK offload operation received from the device
28581
28582 pUserData: user data will be passed back with the
28583 callback
28584
28585 @see WDI_PostAssocReq
28586 @return Result of the function call
28587*/
28588WDI_Status
28589WDI_GTKOffloadReq
28590(
28591 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28592 WDI_GtkOffloadCb wdiGtkOffloadCb,
28593 void* pUserData
28594)
28595{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028596 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28598
28599 /*------------------------------------------------------------------------
28600 Sanity Check
28601 ------------------------------------------------------------------------*/
28602 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28603 {
28604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28605 "WDI API call before module is initialized - Fail request");
28606
28607 return WDI_STATUS_E_NOT_ALLOWED;
28608 }
28609
28610 /*------------------------------------------------------------------------
28611 Fill in Event data and post to the Main FSM
28612 ------------------------------------------------------------------------*/
28613 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28614 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028615 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028616 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28617 wdiEventData.pUserData = pUserData;
28618
28619 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28620}
28621
28622
28623/**
28624 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28625 MAC wants to get GTK Rekey Counter while in power save.
28626 Upon the call of this API the WLAN DAL will pack and
28627 send a HAL GTK offload request message to the lower RIVA
28628 sub-system if DAL is in state STARTED.
28629
28630 In state BUSY this request will be queued. Request won't
28631 be allowed in any other state.
28632
28633 WDI_PostAssocReq must have been called.
28634
28635 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28636 Information Message as specified by the
28637 Device Interface
28638
28639 wdiGtkOffloadGetInfoCb: callback for passing back the
28640 response of the GTK offload operation received from the
28641 device
28642
28643 pUserData: user data will be passed back with the
28644 callback
28645
28646 @see WDI_PostAssocReq
28647 @return Result of the function call
28648*/
28649WDI_Status
28650WDI_GTKOffloadGetInfoReq
28651(
28652 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28653 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28654 void* pUserData
28655)
28656{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028657 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28659
28660 /*------------------------------------------------------------------------
28661 Sanity Check
28662 ------------------------------------------------------------------------*/
28663 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28664 {
28665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28666 "WDI API call before module is initialized - Fail request");
28667
28668 return WDI_STATUS_E_NOT_ALLOWED;
28669 }
28670
28671 /*------------------------------------------------------------------------
28672 Fill in Event data and post to the Main FSM
28673 ------------------------------------------------------------------------*/
28674 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28675 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28676 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28677 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28678 wdiEventData.pUserData = pUserData;
28679
28680 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28681}
28682
28683
28684/**
28685 @brief Process set GTK Offload Request function
28686
28687 @param pWDICtx: pointer to the WLAN DAL context
28688 pEventData: pointer to the event information structure
28689
28690 @see
28691 @return Result of the function call
28692*/
28693WDI_Status
28694WDI_ProcessGTKOffloadReq
28695(
28696 WDI_ControlBlockType* pWDICtx,
28697 WDI_EventInfoType* pEventData
28698)
28699{
28700 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28701 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28702 wpt_uint8* pSendBuffer = NULL;
28703 wpt_uint16 usDataOffset = 0;
28704 wpt_uint16 usSendSize = 0;
28705 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028706 wpt_uint8 ucCurrentSessionId = 0;
28707 WDI_BSSSessionType* pBSSSes = NULL;
28708
Jeff Johnson295189b2012-06-20 16:38:30 -070028709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28710
28711 /*-------------------------------------------------------------------------
28712 Sanity check
28713 -------------------------------------------------------------------------*/
28714 if (( NULL == pEventData ) ||
28715 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28716 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28717 {
28718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028720 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028721 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028722 }
28723
28724 /*-----------------------------------------------------------------------
28725 Get message buffer
28726 -----------------------------------------------------------------------*/
28727 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28728 sizeof(gtkOffloadReqParams),
28729 &pSendBuffer, &usDataOffset, &usSendSize))||
28730 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28731 {
28732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028733 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028734 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28735 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028736 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028737 }
28738
28739 //
28740 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28741 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028742 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28743 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28744 &pBSSSes);
28745 if ( NULL == pBSSSes )
28746 {
28747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028748 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028749 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028750 }
28751
28752 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28753
Jeff Johnson295189b2012-06-20 16:38:30 -070028754 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28755 // Copy KCK
28756 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28757 // Copy KEK
28758 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28759 // Copy KeyReplayCounter
28760 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28761
28762 wpalMemoryCopy( pSendBuffer+usDataOffset,
28763 &gtkOffloadReqParams,
28764 sizeof(gtkOffloadReqParams));
28765
28766 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28767 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28768
28769 /*-------------------------------------------------------------------------
28770 Send Get STA Request to HAL
28771 -------------------------------------------------------------------------*/
28772 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28773 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028774
28775fail:
28776 // Release the message buffer so we don't leak
28777 wpalMemoryFree(pSendBuffer);
28778
28779failRequest:
28780 //WDA should have failure check to avoid the memory leak
28781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028782}
28783
28784
28785/**
28786 @brief Process GTK Offload Get Information Request function
28787
28788 @param pWDICtx: pointer to the WLAN DAL context
28789 pEventData: pointer to the event information structure
28790
28791 @see
28792 @return Result of the function call
28793*/
28794WDI_Status
28795WDI_ProcessGTKOffloadGetInfoReq
28796(
28797 WDI_ControlBlockType* pWDICtx,
28798 WDI_EventInfoType* pEventData
28799)
28800{
28801 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28802 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28803 wpt_uint8* pSendBuffer = NULL;
28804 wpt_uint16 usDataOffset = 0;
28805 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028806 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28807 wpt_uint8 ucCurrentSessionId = 0;
28808 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028809
28810 /*-------------------------------------------------------------------------
28811 Sanity check
28812 -------------------------------------------------------------------------*/
28813 if (( NULL == pEventData ) ||
28814 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28815 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28816 {
28817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028819 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028820 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028821 }
28822
28823 /*-----------------------------------------------------------------------
28824 Get message buffer
28825 -----------------------------------------------------------------------*/
28826 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028827 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028828 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028829 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028830 {
28831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028832 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028833 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28834 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028835 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028836 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028837 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28838 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28839 &pBSSSes);
28840 if ( NULL == pBSSSes )
28841 {
28842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028843 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028844 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028845 }
28846 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028847
28848 //
28849 // Don't need to fill send buffer other than header
28850 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028851 wpalMemoryCopy( pSendBuffer+usDataOffset,
28852 &halGtkOffloadGetInfoReqParams,
28853 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028854
28855 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28856 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28857
28858 /*-------------------------------------------------------------------------
28859 Send Get STA Request to HAL
28860 -------------------------------------------------------------------------*/
28861 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28862 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028863fail:
28864 // Release the message buffer so we don't leak
28865 wpalMemoryFree(pSendBuffer);
28866
28867failRequest:
28868 //WDA should have failure check to avoid the memory leak
28869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028870}
28871
28872/**
28873 @brief Process host offload Rsp function (called when a
28874 response is being received over the bus from HAL)
28875
28876 @param pWDICtx: pointer to the WLAN DAL context
28877 pEventData: pointer to the event information structure
28878
28879 @see
28880 @return Result of the function call
28881*/
28882WDI_Status
28883WDI_ProcessGtkOffloadRsp
28884(
28885 WDI_ControlBlockType* pWDICtx,
28886 WDI_EventInfoType* pEventData
28887)
28888{
Jeff Johnson295189b2012-06-20 16:38:30 -070028889 eHalStatus halStatus;
28890 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028891 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28892 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028893
28894 /*-------------------------------------------------------------------------
28895 Sanity check
28896 -------------------------------------------------------------------------*/
28897 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28898 ( NULL == pEventData->pEventData))
28899 {
28900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028902 WDI_ASSERT(0);
28903 return WDI_STATUS_E_FAILURE;
28904 }
28905
Wilson Yang00256342013-10-10 23:13:38 -070028906 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28907
Jeff Johnson295189b2012-06-20 16:38:30 -070028908 /*-------------------------------------------------------------------------
28909 Extract response and send it to UMAC
28910 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028911 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28912 {
28913 wpalMemoryCopy( &halGtkOffloadRspParams,
28914 pEventData->pEventData,
28915 sizeof(halGtkOffloadRspParams));
28916
28917 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028918 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028919 wdiGtkOffloadRsparams.bssIdx =
28920 halGtkOffloadRspParams.bssIdx;
28921 }
28922 else
28923 {
28924 halStatus = *((eHalStatus*)pEventData->pEventData);
28925 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28926 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028927
28928 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028929 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028930
28931 return WDI_STATUS_SUCCESS;
28932}
28933
28934/**
28935 @brief Process GTK Offload Get Information Response function
28936
28937 @param pWDICtx: pointer to the WLAN DAL context
28938 pEventData: pointer to the event information structure
28939
28940 @see
28941 @return Result of the function call
28942*/
28943WDI_Status
28944WDI_ProcessGTKOffloadGetInfoRsp
28945(
28946 WDI_ControlBlockType* pWDICtx,
28947 WDI_EventInfoType* pEventData
28948)
28949{
Jeff Johnson295189b2012-06-20 16:38:30 -070028950 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028951 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028952 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28953 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028954 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028955
Jeff Johnson295189b2012-06-20 16:38:30 -070028956
28957 /*-------------------------------------------------------------------------
28958 Sanity check
28959 -------------------------------------------------------------------------*/
28960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28961 ( NULL == pEventData->pEventData ))
28962 {
28963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028965 WDI_ASSERT(0);
28966 return WDI_STATUS_E_FAILURE;
28967 }
28968
Wilson Yang00256342013-10-10 23:13:38 -070028969 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28970
28971 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028972 Extract response and send it to UMAC
28973 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028974 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28975 {
28976 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28977 pEventData->pEventData,
28978 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028979
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028980 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028981 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028982 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28983 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28984 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28985 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28986 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28987 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28988 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28989 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028990
28991 wpalMutexAcquire(&pWDICtx->wptMutex);
28992 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28993 &pBSSSes);
28994
28995 if ( NULL == pBSSSes )
28996 {
28997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28998 "Association sequence for this BSS does not exist or "
28999 "association no longer in progress - mysterious HAL response");
29000 wpalMutexRelease(&pWDICtx->wptMutex);
29001 return WDI_STATUS_E_NOT_ALLOWED;
29002 }
29003
29004 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29005 sizeof (wpt_macAddr));
29006 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029007 }
29008 else
29009 {
29010 halStatus = *((eHalStatus*)pEventData->pEventData);
29011 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29012 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029013 /*Notify UMAC*/
29014 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29015 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029016 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029017
29018 return WDI_STATUS_SUCCESS;
29019}
29020#endif // WLAN_FEATURE_GTK_OFFLOAD
29021
29022#ifdef WLAN_WAKEUP_EVENTS
29023WDI_Status
29024WDI_ProcessWakeReasonInd
29025(
29026 WDI_ControlBlockType* pWDICtx,
29027 WDI_EventInfoType* pEventData
29028)
29029{
29030 WDI_LowLevelIndType *pWdiInd;
29031 tpWakeReasonParams pWakeReasonParams;
29032 wpt_uint32 allocSize = 0;
29033
29034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029035 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029036
29037 /*-------------------------------------------------------------------------
29038 Sanity check
29039 -------------------------------------------------------------------------*/
29040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29041 ( NULL == pEventData->pEventData ))
29042 {
29043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029045 WDI_ASSERT( 0 );
29046 return WDI_STATUS_E_FAILURE;
29047 }
29048
29049 /*-------------------------------------------------------------------------
29050 Extract indication and send it to UMAC
29051 -------------------------------------------------------------------------*/
29052 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29053
29054 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29055
29056 //Allocate memory for WDI_WakeReasonIndType structure
29057 pWdiInd = wpalMemoryAllocate(allocSize) ;
29058
29059 if(NULL == pWdiInd)
29060 {
29061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029062 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029063 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029064 WDI_ASSERT(0);
29065 return WDI_STATUS_E_FAILURE;
29066 }
29067
29068 wpalMemoryZero(pWdiInd, allocSize);
29069
29070 /* Fill in the indication parameters*/
29071 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29072 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29073 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29074 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29075 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29076 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29077 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29078 &(pWakeReasonParams->aDataStart[0]),
29079 pWakeReasonParams->ulStoredDataLen);
29080
ltimariub77f24b2013-01-24 18:54:33 -080029081
29082 if ( pWDICtx->wdiLowLevelIndCB )
29083 {
29084 /*Notify UMAC*/
29085 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29086 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029087
29088 //Free memory allocated for WDI_WakeReasonIndType structure
29089 wpalMemoryFree(pWdiInd);
29090
29091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029092 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029093
29094 return WDI_STATUS_SUCCESS;
29095}
29096#endif // WLAN_WAKEUP_EVENTS
29097
29098void WDI_GetWcnssCompiledApiVersion
29099(
29100 WDI_WlanVersionType *pWcnssApiVersion
29101)
29102{
29103 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29104 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29105 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29106 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29107}
29108
29109/**
29110 @brief Process Set TM Level Rsp function (called when a
29111 response is being received over the bus from HAL)
29112
29113 @param pWDICtx: pointer to the WLAN DAL context
29114 pEventData: pointer to the event information structure
29115
29116 @see
29117 @return Result of the function call
29118*/
29119WDI_Status
29120WDI_ProcessSetTmLevelRsp
29121(
29122 WDI_ControlBlockType* pWDICtx,
29123 WDI_EventInfoType* pEventData
29124)
29125{
29126 WDI_Status wdiStatus;
29127 eHalStatus halStatus;
29128 WDI_SetTmLevelCb wdiSetTmLevelCb;
29129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29130
29131 /*-------------------------------------------------------------------------
29132 Sanity check
29133 -------------------------------------------------------------------------*/
29134 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29135 ( NULL == pEventData->pEventData ))
29136 {
29137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029139 WDI_ASSERT(0);
29140 return WDI_STATUS_E_FAILURE;
29141 }
29142
29143 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29144
29145 /*-------------------------------------------------------------------------
29146 Extract response and send it to UMAC
29147 -------------------------------------------------------------------------*/
29148 halStatus = *((eHalStatus*)pEventData->pEventData);
29149 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29150
29151 /*Notify UMAC*/
29152 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29153
29154 return WDI_STATUS_SUCCESS;
29155}/*WDI_ProcessSetTmLevelRsp*/
29156
29157/**
29158 @brief Process Set Thermal Mitigation level Changed request
29159
29160 @param pWDICtx: pointer to the WLAN DAL context
29161 pEventData: pointer to the event information structure
29162
29163 @see
29164 @return Result of the function call
29165*/
29166WDI_Status
29167WDI_ProcessSetTmLevelReq
29168(
29169 WDI_ControlBlockType* pWDICtx,
29170 WDI_EventInfoType* pEventData
29171)
29172{
29173 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29174 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29175 wpt_uint8* pSendBuffer = NULL;
29176 wpt_uint16 usDataOffset = 0;
29177 wpt_uint16 usSendSize = 0;
29178 tSetThermalMitgationType halTmMsg;
29179
29180 /*-------------------------------------------------------------------------
29181 Sanity check
29182 -------------------------------------------------------------------------*/
29183 if (( NULL == pEventData ) ||
29184 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29185 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29186 {
29187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029189 WDI_ASSERT(0);
29190 return WDI_STATUS_E_FAILURE;
29191 }
29192
29193 /*-----------------------------------------------------------------------
29194 Get message buffer
29195 -----------------------------------------------------------------------*/
29196 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29197 sizeof(halTmMsg),
29198 &pSendBuffer, &usDataOffset, &usSendSize))||
29199 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29200 {
29201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029202 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029203 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29204 WDI_ASSERT(0);
29205 return WDI_STATUS_E_FAILURE;
29206 }
29207
29208 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29209 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29210
29211 wpalMemoryCopy( pSendBuffer+usDataOffset,
29212 &halTmMsg,
29213 sizeof(halTmMsg));
29214
29215 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29216 pWDICtx->pfncRspCB = NULL;
29217 /*-------------------------------------------------------------------------
29218 Send Get STA Request to HAL
29219 -------------------------------------------------------------------------*/
29220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29221 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29222}
29223
29224/* Fill the value from the global features enabled array to the global capabilities
29225 * bitmap struct
29226 */
29227static void
29228FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29229{
29230 wpt_int8 i;
29231 for (i=0; i<len; i++)
29232 {
29233 setFeatCaps(fCaps, enabledFeat[i]);
29234 }
29235}
29236
29237/**
29238 @brief WDI_featureCapsExchangeReq
29239 Post feature capability bitmap exchange event.
29240 Host will send its own capability to FW in this req and
29241 expect FW to send its capability back as a bitmap in Response
29242
29243 @param
29244
29245 wdiFeatureCapsExchangeCb: callback called on getting the response.
29246 It is kept to mantain similarity between WDI reqs and if needed, can
29247 be used in future. Currently, It is set to NULL
29248
29249 pUserData: user data will be passed back with the
29250 callback
29251
29252 @see
29253 @return Result of the function call
29254*/
29255WDI_Status
29256WDI_featureCapsExchangeReq
29257(
29258 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29259 void* pUserData
29260)
29261{
29262 WDI_EventInfoType wdiEventData;
29263 wpt_int32 fCapsStructSize;
29264
29265 /*------------------------------------------------------------------------
29266 Sanity Check
29267 ------------------------------------------------------------------------*/
29268 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29269 {
29270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29271 "WDI API call before module is initialized - Fail request");
29272
29273 return WDI_STATUS_E_NOT_ALLOWED;
29274 }
29275
29276 /* Allocate memory separately for global variable carrying FW caps */
29277 fCapsStructSize = sizeof(tWlanFeatCaps);
29278 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29279 if ( NULL == gpHostWlanFeatCaps )
29280 {
29281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029282 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029283 WDI_ASSERT(0);
29284 return WDI_STATUS_MEM_FAILURE;
29285 }
29286
29287 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29288
29289 /*------------------------------------------------------------------------
29290 Fill in Event data and post to the Main FSM
29291 ------------------------------------------------------------------------*/
29292 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29293 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029295 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029296 gpHostWlanFeatCaps->featCaps[0],
29297 gpHostWlanFeatCaps->featCaps[1],
29298 gpHostWlanFeatCaps->featCaps[2],
29299 gpHostWlanFeatCaps->featCaps[3]
29300 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29302 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029303 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29304 wdiEventData.pEventData = gpHostWlanFeatCaps;
29305 wdiEventData.uEventDataSize = fCapsStructSize;
29306 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29307 wdiEventData.pUserData = pUserData;
29308
29309 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29310}
29311
29312/**
Yathish9f22e662012-12-10 14:21:35 -080029313 @brief Disable Active mode offload in Host
29314
29315 @param void
29316 @see
29317 @return void
29318*/
29319void
29320WDI_disableCapablityFeature(wpt_uint8 feature_index)
29321{
29322 supportEnabledFeatures[feature_index] = 0;
29323 return;
29324}
29325
29326/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029327 @brief Process Host-FW Capability Exchange Request function
29328
29329 @param pWDICtx: pointer to the WLAN DAL context
29330 pEventData: pointer to the event information structure
29331
29332 @see
29333 @return Result of the function call
29334*/
29335WDI_Status
29336WDI_ProcessFeatureCapsExchangeReq
29337(
29338 WDI_ControlBlockType* pWDICtx,
29339 WDI_EventInfoType* pEventData
29340)
29341{
29342 wpt_uint8* pSendBuffer = NULL;
29343 wpt_uint16 usDataOffset = 0;
29344 wpt_uint16 usSendSize = 0;
29345 wpt_uint16 usLen = 0;
29346
29347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29348
29349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029350 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029351
29352 /*-------------------------------------------------------------------------
29353 Sanity check
29354 -------------------------------------------------------------------------*/
29355 /* Call back function is NULL since not required for cap exchange req */
29356 if (( NULL == pEventData ) ||
29357 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29358 {
29359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029361 WDI_ASSERT(0);
29362 return WDI_STATUS_E_FAILURE;
29363 }
29364
29365 /*-----------------------------------------------------------------------
29366 Get message buffer
29367 -----------------------------------------------------------------------*/
29368 usLen = sizeof(tWlanFeatCaps);
29369
29370 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29371 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29372 usLen,
29373 &pSendBuffer, &usDataOffset, &usSendSize))||
29374 ( usSendSize < (usDataOffset + usLen )))
29375 {
29376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029377 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029378 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29379 WDI_ASSERT(0);
29380 return WDI_STATUS_E_FAILURE;
29381 }
29382
29383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029384 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029385 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29386 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29387 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29388 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29389 );
29390
29391 /* Copy host caps after the offset in the send buffer */
29392 wpalMemoryCopy( pSendBuffer+usDataOffset,
29393 (tWlanFeatCaps *)pEventData->pEventData,
29394 usLen);
29395
29396 /*-------------------------------------------------------------------------
29397 Send Start Request to HAL
29398 -------------------------------------------------------------------------*/
29399 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29400 (WDI_StartRspCb)pEventData->pCBfnc,
29401 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29402
29403}/*WDI_ProcessFeatureCapsExchangeReq*/
29404
29405/**
29406 @brief Process Host-FW Capability Exchange Response function
29407
29408 @param pWDICtx: pointer to the WLAN DAL context
29409 pEventData: pointer to the event information structure
29410
29411 @see
29412 @return Result of the function call
29413*/
29414WDI_Status
29415WDI_ProcessFeatureCapsExchangeRsp
29416(
29417 WDI_ControlBlockType* pWDICtx,
29418 WDI_EventInfoType* pEventData
29419)
29420{
29421 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29422 wpt_int32 fCapsStructSize;
29423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29424
29425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029426 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029427
29428 /*-------------------------------------------------------------------------
29429 Sanity check
29430 -------------------------------------------------------------------------*/
29431 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29432 ( NULL == pEventData->pEventData ))
29433 {
29434 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029437 WDI_ASSERT(0);
29438 return WDI_STATUS_E_FAILURE;
29439 }
29440
29441 /* Allocate memory separately for global variable carrying FW caps */
29442 fCapsStructSize = sizeof(tWlanFeatCaps);
29443 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29444 if ( NULL == gpFwWlanFeatCaps )
29445 {
29446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029447 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029448 WDI_ASSERT(0);
29449 return WDI_STATUS_MEM_FAILURE;
29450 }
29451
29452 /*-------------------------------------------------------------------------
29453 Unpack HAL Response Message - the header was already extracted by the
29454 main Response Handling procedure
29455 -------------------------------------------------------------------------*/
29456 /*-------------------------------------------------------------------------
29457 Extract response and send it to UMAC
29458 -------------------------------------------------------------------------*/
29459
29460 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29461 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029463 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029464 gpFwWlanFeatCaps->featCaps[0],
29465 gpFwWlanFeatCaps->featCaps[1],
29466 gpFwWlanFeatCaps->featCaps[2],
29467 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029468 );
29469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29470 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029471 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29472
29473 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29474 if (wdiFeatureCapsExchangeCb != NULL)
29475 wdiFeatureCapsExchangeCb(NULL, NULL);
29476
29477 return WDI_STATUS_SUCCESS;
29478}
29479
Mohit Khanna4a70d262012-09-11 16:30:12 -070029480#ifdef WLAN_FEATURE_11AC
29481WDI_Status
29482WDI_ProcessUpdateVHTOpModeRsp
29483(
29484 WDI_ControlBlockType* pWDICtx,
29485 WDI_EventInfoType* pEventData
29486)
29487{
29488 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29489 WDI_Status wdiStatus;
29490 eHalStatus halStatus;
29491
29492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29493
29494 /*-------------------------------------------------------------------------
29495 Sanity check
29496 -------------------------------------------------------------------------*/
29497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29498 ( NULL == pEventData->pEventData))
29499 {
29500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029501 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029502 WDI_ASSERT(0);
29503 return WDI_STATUS_E_FAILURE;
29504 }
29505 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29506
29507 /*-------------------------------------------------------------------------
29508 Extract response and send it to UMAC
29509 -------------------------------------------------------------------------*/
29510 halStatus = *((eHalStatus*)pEventData->pEventData);
29511 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29512
29513 /*Notify UMAC*/
29514 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29515
29516 return WDI_STATUS_SUCCESS;
29517}
29518#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029519/**
29520 @brief WDI_getHostWlanFeatCaps
29521 WDI API that returns whether the feature passed to it as enum value in
29522 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29523 variable storing host capability bitmap to find this. This can be used by
29524 other moduels to decide certain things like call different APIs based on
29525 whether a particular feature is supported.
29526
29527 @param
29528
29529 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29530
29531 @see
29532 @return
29533 0 - if the feature is NOT supported in host
29534 any non-zero value - if the feature is SUPPORTED in host.
29535*/
29536wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29537{
29538 wpt_uint8 featSupported = 0;
29539 if (gpHostWlanFeatCaps != NULL)
29540 {
29541 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29542 }
29543 else
29544 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029546 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029547 }
29548 return featSupported;
29549}
29550
29551/**
29552 @brief WDI_getFwWlanFeatCaps
29553 WDI API that returns whether the feature passed to it as enum value in
29554 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29555 variable storing host capability bitmap to find this. This can be used by
29556 other moduels to decide certain things like call different APIs based on
29557 whether a particular feature is supported.
29558
29559 @param
29560
29561 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29562 in wlan_hal_msg.h.
29563
29564 @see
29565 @return
29566 0 - if the feature is NOT supported in FW
29567 any non-zero value - if the feature is SUPPORTED in FW.
29568*/
29569wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29570{
29571 wpt_uint8 featSupported = 0;
29572 if (gpFwWlanFeatCaps != NULL)
29573 {
29574 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29575 }
29576 else
29577 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029579 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029580 }
29581 return featSupported;
29582}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029583
Katya Nigamf0511f62015-05-05 16:40:57 +053029584wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29585{
29586 /* 5gHz Channel */
29587 if( channel >= 34 && channel <= 165 )
29588 {
29589 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29590 {
29591 if ( channel== 36 || channel == 52 || channel == 100 ||
29592 channel == 116 || channel == 149 )
29593 {
29594 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29595 }
29596 else if ( channel == 40 || channel == 56 || channel == 104 ||
29597 channel == 120 || channel == 153 )
29598 {
29599 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29600 }
29601 else if ( channel == 44 || channel == 60 || channel == 108 ||
29602 channel == 124 || channel == 157 )
29603 {
29604 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29605 }
29606 else if ( channel == 48 || channel == 64 || channel == 112 ||
29607 channel == 128 || channel == 144 || channel == 161 )
29608 {
29609 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29610 }
29611 else if ( channel == 165 )
29612 {
29613 return PHY_SINGLE_CHANNEL_CENTERED;
29614 }
29615 }
29616
29617 else
29618 {
29619 if ( channel== 40 || channel == 48 || channel == 56 ||
29620 channel == 64 || channel == 104 || channel == 112 ||
29621 channel == 120 || channel == 128 || channel == 136 ||
29622 channel == 144 || channel == 153 || channel == 161 )
29623 {
29624 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29625 }
29626 else if ( channel== 36 || channel == 44 || channel == 52 ||
29627 channel == 60 || channel == 100 || channel == 108 ||
29628 channel == 116 || channel == 124 || channel == 132 ||
29629 channel == 140 || channel == 149 || channel == 157 )
29630 {
29631 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29632 }
29633 else if ( channel == 165 )
29634 {
29635 return PHY_SINGLE_CHANNEL_CENTERED;
29636 }
29637 }
29638 }
29639
29640 /* 2.4Ghz Channel */
29641 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
29642 {
29643 if (channel >= 1 && channel <= 7)
29644 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29645 else if (channel >= 8 && channel <= 13)
29646 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29647 else if (channel ==14)
29648 return PHY_SINGLE_CHANNEL_CENTERED;
29649 }
29650 return PHY_SINGLE_CHANNEL_CENTERED;
29651}
29652
Mohit Khanna4a70d262012-09-11 16:30:12 -070029653#ifdef WLAN_FEATURE_11AC
29654WDI_Status
29655WDI_ProcessUpdateVHTOpModeReq
29656(
29657 WDI_ControlBlockType* pWDICtx,
29658 WDI_EventInfoType* pEventData
29659)
29660{
29661 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29662 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29663 wpt_uint8* pSendBuffer = NULL;
29664 wpt_uint16 usDataOffset = 0;
29665 wpt_uint16 usSendSize = 0;
29666
29667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29668
29669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029670 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029671
29672 /*-------------------------------------------------------------------------
29673 Sanity check
29674 -------------------------------------------------------------------------*/
29675 if (( NULL == pEventData ) ||
29676 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29677 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29678 {
29679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029680 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029681 WDI_ASSERT(0);
29682 return WDI_STATUS_E_FAILURE;
29683 }
29684
29685 /*-----------------------------------------------------------------------
29686 Get message buffer
29687 -----------------------------------------------------------------------*/
29688 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29689 sizeof(WDI_UpdateVHTOpMode),
29690 &pSendBuffer, &usDataOffset, &usSendSize))||
29691 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29692 {
29693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29694 "Unable to get send buffer in update vht opMode req");
29695 WDI_ASSERT(0);
29696 return WDI_STATUS_E_FAILURE;
29697 }
29698
29699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029700 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029701
29702 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29703 sizeof(WDI_UpdateVHTOpMode));
29704
29705 /*-------------------------------------------------------------------------
29706 Send Start Request to HAL
29707 -------------------------------------------------------------------------*/
29708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29709 wdiVHTOpModeCb,
29710 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29711
29712}
29713
29714WDI_Status
29715WDI_UpdateVHTOpModeReq
29716(
29717 WDI_UpdateVHTOpMode *pData,
29718 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29719 void* pUserData
29720)
29721{
29722 WDI_EventInfoType wdiEventData;
29723
29724 /*------------------------------------------------------------------------
29725 Sanity Check
29726 ------------------------------------------------------------------------*/
29727 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29728 {
29729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29730 "WDI API call before module is initialized - Fail request");
29731
29732 return WDI_STATUS_E_NOT_ALLOWED;
29733 }
29734
29735 /*------------------------------------------------------------------------
29736 Fill in Event data and post to the Main FSM
29737 ------------------------------------------------------------------------*/
29738 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29739 wdiEventData.pEventData = pData;
29740 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29741 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29742 wdiEventData.pUserData = pUserData;
29743
29744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029745 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029746
29747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29748
29749}
29750#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029751
29752/**
29753 @brief WDI_TransportChannelDebug -
29754 Display DXE Channel debugging information
29755 User may request to display DXE channel snapshot
29756 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029757
Jeff Johnsonb88db982012-12-10 13:34:59 -080029758 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029759 @param debugFlags : Enable stall detect features
29760 defined by WPAL_DeviceDebugFlags
29761 These features may effect
29762 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029763 @see
29764 @return none
29765*/
29766void WDI_TransportChannelDebug
29767(
29768 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029769 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029770)
29771{
Mihir Shete40a55652014-03-02 14:14:47 +053029772 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029773 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029774}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029775/**
29776 @brief WDI_SsrTimerCB
29777 Callback function for SSR timer, if this is called then the graceful
29778 shutdown for Riva did not happen.
29779
29780 @param pUserData : user data to timer
29781
29782 @see
29783 @return none
29784*/
29785void
29786WDI_SsrTimerCB
29787(
29788 void *pUserData
29789)
29790{
29791 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29793
29794 if (NULL == pWDICtx )
29795 {
29796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029797 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029798 WDI_ASSERT(0);
29799 return;
29800 }
29801 wpalRivaSubystemRestart();
29802
29803 return;
29804
29805}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029806
29807/**
29808 @brief WDI_SetEnableSSR -
29809 This API is called to enable/disable SSR on WDI timeout.
29810
29811 @param enableSSR : enable/disable SSR
29812
29813 @see
29814 @return none
29815*/
29816void WDI_SetEnableSSR(wpt_boolean enableSSR)
29817{
29818 gWDICb.bEnableSSR = enableSSR;
29819}
Leo Chang9056f462013-08-01 19:21:11 -070029820
29821
29822#ifdef FEATURE_WLAN_LPHB
29823/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029824 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029825 This function will be invoked when FW detects low power
29826 heart beat failure
29827
29828 @param pWDICtx : wdi context
29829 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029830 @see
29831 @return Result of the function call
29832*/
29833WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029834WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029835(
29836 WDI_ControlBlockType* pWDICtx,
29837 WDI_EventInfoType* pEventData
29838)
29839{
29840 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029841 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29843
29844 /*-------------------------------------------------------------------------
29845 Sanity check
29846 -------------------------------------------------------------------------*/
29847 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29848 (NULL == pEventData->pEventData))
29849 {
29850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29851 "%s: Invalid parameters", __func__);
29852 WDI_ASSERT(0);
29853 return WDI_STATUS_E_FAILURE;
29854 }
29855
29856 /*-------------------------------------------------------------------------
29857 Extract indication and send it to UMAC
29858 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029859 wpalMemoryCopy(&lphbIndicationParam,
29860 pEventData->pEventData,
29861 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029862
Leo Changd9df8aa2013-09-26 13:32:26 -070029863 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029864 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029865 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029866 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029867 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029868 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029869 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029870 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029871 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029872 /*Notify UMAC*/
29873 if (pWDICtx->wdiLowLevelIndCB)
29874 {
29875 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29876 }
29877
29878 return WDI_STATUS_SUCCESS;
29879}
29880
29881/**
29882 @brief WDI_ProcessLphbCfgRsp -
29883 LPHB configuration response from FW
29884
29885 @param pWDICtx : wdi context
29886 pEventData : indication data
29887
29888 @see
29889 @return Result of the function call
29890*/
29891WDI_Status WDI_ProcessLphbCfgRsp
29892(
29893 WDI_ControlBlockType* pWDICtx,
29894 WDI_EventInfoType* pEventData
29895)
29896{
29897 WDI_Status wdiStatus;
29898 eHalStatus halStatus;
29899 WDI_LphbCfgCb wdiLphbCfgCb;
29900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29901
29902 /*-------------------------------------------------------------------------
29903 Sanity check
29904 -------------------------------------------------------------------------*/
29905 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29906 (NULL == pEventData->pEventData))
29907 {
29908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29909 "%s: Invalid parameters", __func__);
29910 WDI_ASSERT(0);
29911 return WDI_STATUS_E_FAILURE;
29912 }
29913
29914 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29915
29916 /*-------------------------------------------------------------------------
29917 Extract response and send it to UMAC
29918 -------------------------------------------------------------------------*/
29919 halStatus = *((eHalStatus*)pEventData->pEventData);
29920 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29921
29922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29923 "LPHB Cfg Rsp Return status %d", wdiStatus);
29924 /*Notify UMAC*/
29925 if (NULL != wdiLphbCfgCb)
29926 {
29927 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29928 }
29929
29930 return WDI_STATUS_SUCCESS;
29931}
29932
29933/**
29934 @brief WDI_ProcessLPHBConfReq -
29935 LPHB configuration request to FW
29936
29937 @param pWDICtx : wdi context
29938 pEventData : indication data
29939
29940 @see
29941 @return none
29942*/
29943WDI_Status WDI_ProcessLPHBConfReq
29944(
29945 WDI_ControlBlockType* pWDICtx,
29946 WDI_EventInfoType* pEventData
29947)
29948{
29949 WDI_LPHBReq *pLphbReqParams;
29950 WDI_Status wdiStatus;
29951 wpt_uint8* pSendBuffer = NULL;
29952 wpt_uint16 usDataOffset = 0;
29953 wpt_uint16 usSendSize = 0;
29954 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29956
29957 /*-------------------------------------------------------------------------
29958 Sanity check
29959 -------------------------------------------------------------------------*/
29960 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29961 {
29962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29963 "%s: Invalid parameters in Suspend ind",__func__);
29964 WDI_ASSERT(0);
29965 return WDI_STATUS_E_FAILURE;
29966 }
29967
29968 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29969
29970 /*-----------------------------------------------------------------------
29971 Get message buffer
29972 -----------------------------------------------------------------------*/
29973 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29974 WDI_LPHB_CFG_REQ,
29975 sizeof(tHalLowPowerHeartBeatReqMsg),
29976 &pSendBuffer, &usDataOffset, &usSendSize))||
29977 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29978 {
29979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29980 "Unable to get send buffer in LPHB Ind ");
29981 WDI_ASSERT(0);
29982 return WDI_STATUS_E_FAILURE;
29983 }
29984
29985 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29986 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29987
29988 halLphbReqRarams->lowPowerHeartBeatCmdType =
29989 (tANI_U16)(++pLphbReqParams->cmd);
29990 switch ((tANI_U16)pLphbReqParams->cmd)
29991 {
29992 case WDI_LPHB_SET_EN_PARAMS_INDID:
29993 halLphbReqRarams->sessionIdx =
29994 pLphbReqParams->params.lphbEnableReq.session;
29995 halLphbReqRarams->options.control.heartBeatEnable =
29996 pLphbReqParams->params.lphbEnableReq.enable;
29997 halLphbReqRarams->options.control.heartBeatType =
29998 pLphbReqParams->params.lphbEnableReq.item;
29999 break;
30000
30001 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30002 halLphbReqRarams->sessionIdx =
30003 pLphbReqParams->params.lphbTcpParamReq.session;
30004 halLphbReqRarams->options.tcpParams.timeOutSec =
30005 pLphbReqParams->params.lphbTcpParamReq.timeout;
30006 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30007 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30008 sizeof(v_U32_t));
30009 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30010 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30011 sizeof(v_U32_t));
30012
30013 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30014 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30015 WDI_MAC_ADDR_LEN);
30016
30017 halLphbReqRarams->options.tcpParams.hostPort =
30018 pLphbReqParams->params.lphbTcpParamReq.src_port;
30019 halLphbReqRarams->options.tcpParams.destPort =
30020 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030021 halLphbReqRarams->options.tcpParams.timePeriodSec =
30022 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30023 halLphbReqRarams->options.tcpParams.tcpSn =
30024 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030025 break;
30026
30027 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30028 halLphbReqRarams->sessionIdx =
30029 pLphbReqParams->params.lphbTcpFilterReq.session;
30030 halLphbReqRarams->options.tcpUdpFilter.offset =
30031 pLphbReqParams->params.lphbTcpFilterReq.offset;
30032 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30033 pLphbReqParams->params.lphbTcpFilterReq.length;
30034 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30035 pLphbReqParams->params.lphbTcpFilterReq.filter,
30036 WDI_LPHB_FILTER_LEN);
30037 break;
30038
30039 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30040 halLphbReqRarams->sessionIdx =
30041 pLphbReqParams->params.lphbUdpParamReq.session;
30042 halLphbReqRarams->options.udpParams.timeOutSec =
30043 pLphbReqParams->params.lphbUdpParamReq.timeout;
30044 halLphbReqRarams->options.udpParams.timePeriodSec =
30045 pLphbReqParams->params.lphbUdpParamReq.interval;
30046 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30047 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30048 sizeof(v_U32_t));
30049 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30050 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30051 sizeof(v_U32_t));
30052
30053 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30054 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30055 WDI_MAC_ADDR_LEN);
30056
30057 halLphbReqRarams->options.udpParams.hostPort =
30058 pLphbReqParams->params.lphbUdpParamReq.src_port;
30059 halLphbReqRarams->options.udpParams.destPort =
30060 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30061 break;
30062
30063 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30064 halLphbReqRarams->sessionIdx =
30065 pLphbReqParams->params.lphbUdpFilterReq.session;
30066 halLphbReqRarams->options.tcpUdpFilter.offset =
30067 pLphbReqParams->params.lphbUdpFilterReq.offset;
30068 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30069 pLphbReqParams->params.lphbUdpFilterReq.length;
30070 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30071 pLphbReqParams->params.lphbUdpFilterReq.filter,
30072 WDI_LPHB_FILTER_LEN);
30073 break;
30074
30075 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30076 /* NA */
30077 break;
30078
30079 default:
30080 break;
30081 }
30082
30083 /*-------------------------------------------------------------------------
30084 Send Suspend Request to HAL
30085 -------------------------------------------------------------------------*/
30086 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30087 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30088
30089 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30090 usSendSize, pWDICtx->pfncRspCB,
30091 pWDICtx->pReqStatusUserData,
30092 WDI_LPHB_CFG_RESP);
30093
30094 return wdiStatus;
30095}
30096
30097/**
30098 @brief WDI_LPHBConfReq -
30099 LPHB configuration request API
30100
30101 @param lphbconfParam : configuration parameter
30102 usrData : client context
30103 lphbCfgCb : callback function pointer
30104
30105 @see
30106 @return Success or fail status code
30107*/
30108WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30109 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30110{
30111 WDI_EventInfoType wdiEventData;
30112
30113 /*------------------------------------------------------------------------
30114 Sanity Check
30115 ------------------------------------------------------------------------*/
30116 if (eWLAN_PAL_FALSE == gWDIInitialized)
30117 {
30118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30119 "WDI API call before module is initialized - Fail request");
30120
30121 return WDI_STATUS_E_NOT_ALLOWED;
30122 }
30123
30124 /*------------------------------------------------------------------------
30125 Fill in Event data and post to the Main FSM
30126 ------------------------------------------------------------------------*/
30127 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30128 wdiEventData.pEventData = lphbconfParam;
30129 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30130 wdiEventData.pCBfnc = lphbCfgCb;
30131 wdiEventData.pUserData = usrData;
30132
30133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30134}
30135#endif /* FEATURE_WLAN_LPHB */
30136
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030137/**
30138 @brief WDI_ProcessIbssPeerInactivityInd
30139 Process peer inactivity indication coming from HAL
30140
30141 @param pWDICtx: pointer to the WLAN DAL context
30142 pEventData: pointer to the event information structure
30143 @see
30144 @return Result of the function call
30145*/
30146WDI_Status
30147WDI_ProcessIbssPeerInactivityInd
30148(
30149 WDI_ControlBlockType* pWDICtx,
30150 WDI_EventInfoType* pEventData
30151)
30152{
30153 WDI_LowLevelIndType wdiInd;
30154 tIbssPeerInactivityIndMsg halIbssIndMsg;
30155
30156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30157
30158 /*-------------------------------------------------------------------------
30159 Sanity check
30160 -------------------------------------------------------------------------*/
30161 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30162 ( NULL == pEventData->pEventData ))
30163 {
30164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30165 "%s: Invalid parameters", __func__);
30166 WDI_ASSERT( 0 );
30167 return WDI_STATUS_E_FAILURE;
30168 }
30169
30170 /*-------------------------------------------------------------------------
30171 Extract indication and send it to UMAC
30172 -------------------------------------------------------------------------*/
30173 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30174 pEventData->pEventData,
30175 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30176
30177 /*Fill in the indication parameters*/
30178 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30179
30180 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30181 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30182
30183 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30184 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30185
30186 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30187 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30188 sizeof(tSirMacAddr));
30189
30190 /*Notify UMAC*/
30191 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30192
30193 return WDI_STATUS_SUCCESS;
30194
30195} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030196
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030197/**
30198*@brief WDI_RateUpdateInd will be called when the upper MAC
30199 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030200
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030201
30202 @param wdiRateUpdateIndParams:
30203
30204
30205 @see
30206 @return Result of the function call
30207*/
30208WDI_Status
30209WDI_RateUpdateInd
30210(
30211 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30212)
30213{
30214 WDI_EventInfoType wdiEventData;
30215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30216
30217 /*------------------------------------------------------------------------
30218 Sanity Check
30219 ------------------------------------------------------------------------*/
30220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30221 {
30222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30223 "WDI API call before module is initialized - Fail request");
30224
30225 return WDI_STATUS_E_NOT_ALLOWED;
30226 }
30227
30228 /*------------------------------------------------------------------------
30229 Fill in Event data and post to the Main FSM
30230 ------------------------------------------------------------------------*/
30231 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30232 wdiEventData.pEventData = wdiRateUpdateIndParams;
30233 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30234 wdiEventData.pCBfnc = NULL;
30235 wdiEventData.pUserData = NULL;
30236
30237 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30238
30239}/* WDI_RateUpdateInd */
30240
30241/**
30242 @brief Process Rate Update Indication and post it to HAL
30243
30244 @param pWDICtx: pointer to the WLAN DAL context
30245 pEventData: pointer to the event information structure
30246
30247 @see
30248 @return Result of the function call
30249*/
30250WDI_Status
30251WDI_ProcessRateUpdateInd
30252(
30253 WDI_ControlBlockType* pWDICtx,
30254 WDI_EventInfoType* pEventData
30255)
30256{
30257 wpt_uint8* pSendBuffer = NULL;
30258 wpt_uint16 usDataOffset = 0;
30259 wpt_uint16 usSendSize = 0;
30260 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30261 tHalRateUpdateInd *pRateUpdateInd;
30262 WDI_Status wdiStatus;
30263
30264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30265
30266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30267 "%s", __func__);
30268
30269 /*-------------------------------------------------------------------------
30270 Sanity check
30271 -------------------------------------------------------------------------*/
30272 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30273 {
30274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30275 "%s: Invalid parameters", __func__);
30276 WDI_ASSERT(0);
30277 return WDI_STATUS_E_FAILURE;
30278 }
30279 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30280 /*-----------------------------------------------------------------------
30281 Get message buffer
30282 -----------------------------------------------------------------------*/
30283
30284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30285 WDI_RATE_UPDATE_IND,
30286 sizeof(tHalRateUpdateParams),
30287 &pSendBuffer, &usDataOffset, &usSendSize))||
30288 ( usSendSize < (usDataOffset +
30289 sizeof(tHalRateUpdateParams) )))
30290 {
30291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30292 "Unable to get send buffer in Rate Update Indication %p ",
30293 pEventData);
30294 WDI_ASSERT(0);
30295 return WDI_STATUS_E_FAILURE;
30296 }
30297
30298 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30299
30300 /* Copy the bssid */
30301 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30302 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30303
30304 /* Copy the tx flags */
30305 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30306 pwdiRateUpdateInd->ucastDataRateTxFlag;
30307 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30308 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30309 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30310 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30311 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30312 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30313
30314 /* Copy the tx rates */
30315 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30316 pwdiRateUpdateInd->ucastDataRate;
30317 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30318 pwdiRateUpdateInd->reliableMcastDataRate;
30319 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30320 pwdiRateUpdateInd->mcastDataRate24GHz;
30321 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30322 pwdiRateUpdateInd->mcastDataRate5GHz;
30323
30324 /*-------------------------------------------------------------------------
30325 Send Rate Update Indication to HAL
30326 -------------------------------------------------------------------------*/
30327 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30328 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30329
30330 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30331
30332 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30333 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30334
30335} /* WDI_ProcessRateUpdateInd */
30336
30337#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030338/**
30339 @brief Process stop batch indication from WDA
30340
30341 @param pWDICtx: pointer to the WLAN DAL context
30342 pEventData: pointer to the event information structure
30343
30344 @see
30345 @return Result of the function call
30346*/
30347WDI_Status
30348WDI_ProcessStopBatchScanInd
30349(
30350 WDI_ControlBlockType* pWDICtx,
30351 WDI_EventInfoType* pEventData
30352)
30353{
30354 wpt_uint8* pSendBuffer = NULL;
30355 wpt_uint16 usDataOffset = 0;
30356 wpt_uint16 usSendSize = 0;
30357 WDI_Status wdiStatus;
30358 tHalBatchScanStopIndParam *pHalInd = NULL;
30359 WDI_StopBatchScanIndType *pWdiInd = NULL;
30360
30361
30362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30363
30364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30365 "%s", __func__);
30366
30367 /*-------------------------------------------------------------------------
30368 Sanity check
30369 -------------------------------------------------------------------------*/
30370
30371 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30372 {
30373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30374 "%s: Invalid parameters", __func__);
30375 WDI_ASSERT(0);
30376 return WDI_STATUS_E_FAILURE;
30377 }
30378 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30379 /*-----------------------------------------------------------------------
30380 Get message buffer
30381 -----------------------------------------------------------------------*/
30382
30383 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30384 WDI_STOP_BATCH_SCAN_IND,
30385 sizeof(tHalBatchScanStopIndParam),
30386 &pSendBuffer, &usDataOffset, &usSendSize))||
30387 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30388 {
30389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30390 "Unable to get send buffer in stop batch scan ind %p ",
30391 pEventData);
30392 WDI_ASSERT(0);
30393 return WDI_STATUS_E_FAILURE;
30394 }
30395
30396 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30397 pHalInd->param = pWdiInd->param;
30398
30399 pWDICtx->pReqStatusUserData = NULL;
30400 pWDICtx->pfncRspCB = NULL;
30401 /*-------------------------------------------------------------------------
30402 Send Stop batch scan indication to HAL
30403 -------------------------------------------------------------------------*/
30404 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30405 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30406}
30407
30408/**
30409 @brief This API is called to trigger batch scan results from FW
30410
30411 @param pWDICtx: pointer to the WLAN DAL context
30412 pEventData: pointer to the event information structure
30413
30414 @see
30415 @return Result of the function call
30416*/
30417WDI_Status
30418WDI_ProcessTriggerBatchScanResultInd
30419(
30420 WDI_ControlBlockType* pWDICtx,
30421 WDI_EventInfoType* pEventData
30422)
30423{
30424 WDI_Status wdiStatus;
30425 wpt_uint8* pSendBuffer = NULL;
30426 wpt_uint16 usDataOffset = 0;
30427 wpt_uint16 usSendSize = 0;
30428 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30429 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30430
30431
30432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30433
30434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30435 "%s", __func__);
30436
30437 /*-------------------------------------------------------------------------
30438 Sanity check
30439 -------------------------------------------------------------------------*/
30440
30441 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30442 {
30443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30444 "%s: Invalid parameters", __func__);
30445 WDI_ASSERT(0);
30446 return WDI_STATUS_E_FAILURE;
30447 }
30448 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30449 /*-----------------------------------------------------------------------
30450 Get message buffer
30451 -----------------------------------------------------------------------*/
30452
30453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30454 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30455 sizeof(tHalBatchScanTriggerResultParam),
30456 &pSendBuffer, &usDataOffset, &usSendSize))||
30457 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30458 {
30459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30460 "Unable to get send buffer in stop batch scan ind %p ",
30461 pEventData);
30462 WDI_ASSERT(0);
30463 return WDI_STATUS_E_FAILURE;
30464 }
30465
30466 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30467 pHalInd->param = pWdiInd->param;
30468
30469 pWDICtx->pReqStatusUserData = NULL;
30470 pWDICtx->pfncRspCB = NULL;
30471 /*-------------------------------------------------------------------------
30472 Send trigger batch scan result indication to HAL
30473 -------------------------------------------------------------------------*/
30474 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30475 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30476}
30477
30478
30479/**
30480 @brief Process set batch scan response from FW
30481
30482 @param pWDICtx: pointer to the WLAN DAL context
30483 pEventData: pointer to the event information structure
30484
30485 @see
30486 @return Result of the function call
30487*/
30488WDI_Status
30489WDI_ProcessSetBatchScanRsp
30490(
30491 WDI_ControlBlockType* pWDICtx,
30492 WDI_EventInfoType* pEventData
30493)
30494{
30495 WDI_SetBatchScanCb wdiSetBatchScanCb;
30496 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30497
30498 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30500
30501 /*sanity check*/
30502 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30503 ( NULL == pEventData->pEventData))
30504 {
30505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30506 "%s: Invalid parameters", __func__);
30507 WDI_ASSERT(0);
30508 return WDI_STATUS_E_FAILURE;
30509 }
30510
30511 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30512 if ( NULL == wdiSetBatchScanCb)
30513 {
30514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30515 "%s: call back function is NULL", __func__);
30516 WDI_ASSERT(0);
30517 return WDI_STATUS_E_FAILURE;
30518 }
30519
30520 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30521
30522 if (NULL == pSetBatchScanRsp)
30523 {
30524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030525 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030526 pWDICtx, pEventData, pEventData->pEventData);
30527 WDI_ASSERT(0);
30528 return WDI_STATUS_E_FAILURE;
30529 }
30530
Sunil Duttbd736ed2014-05-26 21:19:41 +053030531 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030532 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30533
30534 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30535
Sunil Duttbd736ed2014-05-26 21:19:41 +053030536 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030537 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30538
30539 wpalMemoryFree(pSetBatchScanRsp);
30540
30541 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030542}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030543
30544/**
30545 @brief Process batch scan result indication from FW
30546
30547 @param pWDICtx: pointer to the WLAN DAL context
30548 pEventData: pointer to the event information structure
30549
30550 @see
30551 @return Result of the function call
30552*/
30553WDI_Status
30554WDI_ProcessBatchScanResultInd
30555(
30556 WDI_ControlBlockType* pWDICtx,
30557 WDI_EventInfoType* pEventData
30558)
30559{
30560 void *pBatchScanResultInd;
30561 WDI_LowLevelIndType wdiInd;
30562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30563
Sunil Duttbd736ed2014-05-26 21:19:41 +053030564 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030565 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30566 ( NULL == pEventData->pEventData))
30567 {
30568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30569 "%s: Invalid parameters", __func__);
30570 WDI_ASSERT(0);
30571 return WDI_STATUS_E_FAILURE;
30572 }
30573
Sunil Duttbd736ed2014-05-26 21:19:41 +053030574 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030575 pBatchScanResultInd = (void *)pEventData->pEventData;
30576
Sunil Duttbd736ed2014-05-26 21:19:41 +053030577 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030578 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30579
30580 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30581
Sunil Duttbd736ed2014-05-26 21:19:41 +053030582 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030583 if (pWDICtx->wdiLowLevelIndCB)
30584 {
30585 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30586 }
30587 else
30588 {
30589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30590 "%s: WDILowLevelIndCb is null", __func__);
30591 WDI_ASSERT(0);
30592 return WDI_STATUS_E_FAILURE;
30593 }
30594
30595 return WDI_STATUS_SUCCESS;
30596} /*End of WDI_ProcessBatchScanResultInd*/
30597
Sunil Duttbd736ed2014-05-26 21:19:41 +053030598#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30599/**
30600 @brief Process Link Layer Statistics Result indication from FW
30601
30602 @param pWDICtx: pointer to the WLAN DAL context
30603 pEventData: pointer to the event information structure
30604
30605 @see
30606 @return Result of the function call
30607*/
30608WDI_Status
30609WDI_ProcessLinkLayerStatsResultsInd
30610(
30611 WDI_ControlBlockType* pWDICtx,
30612 WDI_EventInfoType* pEventData
30613)
30614{
30615 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030616 WDI_LLstatsResultsType *halLLStatsResults;
30617 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030618 WDI_LowLevelIndType wdiInd;
30619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30620
30621 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30622 "%s: Event RESULTS Indication", __func__);
30623
30624 /* sanity check */
30625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30626 ( NULL == pEventData->pEventData))
30627 {
30628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30629 "%s: Invalid parameters", __func__);
30630 WDI_ASSERT(0);
30631 return WDI_STATUS_E_FAILURE;
30632 }
30633
30634 /* extract response and send it to UMAC */
30635 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30636
30637 /* Fill in the indication parameters */
30638 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30639
Dino Mycled3d50022014-07-07 12:58:25 +053030640 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30641 = pLinkLayerStatsInd;
30642
30643 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30644
30645
30646 /* Need to fill in the MAC address */
30647 if ( WDI_STATUS_SUCCESS !=
30648 WDI_STATableGetStaMacAddr(pWDICtx,
30649 halLLStatsResults->iface_id,
30650 &macAddr))
30651 {
30652 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30653 " ifaceId: %u does not exist in the WDI Station Table",
30654 halLLStatsResults->iface_id);
30655
30656 return WDI_STATUS_E_FAILURE;
30657 }
30658 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30659 macAddr, WDI_MAC_ADDR_LEN);
30660
30661 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30662 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30663 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030664
30665 /* Notify UMAC */
30666 if (pWDICtx->wdiLowLevelIndCB)
30667 {
30668 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30669 }
30670 else
30671 {
30672 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30673 "%s: WDILowLevelIndCb is null", __func__);
30674 WDI_ASSERT(0);
30675 return WDI_STATUS_E_FAILURE;
30676 }
30677
30678 return WDI_STATUS_SUCCESS;
30679} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30680#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30681
Rajeev79dbe4c2013-10-05 11:03:42 +053030682/**
30683 @brief WDI_ProcessSetBatchScanReq -
30684 Set batch scan request to FW
30685
30686 @param pWDICtx : wdi context
30687 pEventData : indication data
30688
30689 @see
30690 @return none
30691*/
30692WDI_Status WDI_ProcessSetBatchScanReq
30693(
30694 WDI_ControlBlockType* pWDICtx,
30695 WDI_EventInfoType* pEventData
30696)
30697{
30698 WDI_SetBatchScanReqType *pWdiReq;
30699 WDI_Status wdiStatus;
30700 wpt_uint8* pSendBuffer = NULL;
30701 wpt_uint16 usDataOffset = 0;
30702 wpt_uint16 usSendSize = 0;
30703 tHalBatchScanSetParams *pHalReq;
30704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30705
30706 /*sanity check*/
30707 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30708 {
30709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30710 "%s: Invalid parameters in set batch scan request", __func__);
30711 WDI_ASSERT(0);
30712 return WDI_STATUS_E_FAILURE;
30713 }
30714
30715
30716 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30717
30718
30719 /*get message buffer*/
30720 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30721 WDI_SET_BATCH_SCAN_REQ,
30722 sizeof(tHalBatchScanSetParams),
30723 &pSendBuffer, &usDataOffset, &usSendSize))||
30724 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30725 {
30726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30727 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30728 WDI_ASSERT(0);
30729 return WDI_STATUS_E_FAILURE;
30730 }
30731
30732 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30733
30734 pHalReq->rtt = pWdiReq->rtt;
30735 pHalReq->rfBand = pWdiReq->rfBand;
30736 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30737 pHalReq->scanInterval = pWdiReq->scanFrequency;
30738 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30739
30740 /*send set batch scan request to fw*/
30741 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30742 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30743
30744 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30745 usSendSize, pWDICtx->pfncRspCB,
30746 pWDICtx->pReqStatusUserData,
30747 WDI_SET_BATCH_SCAN_RESP);
30748
30749 return wdiStatus;
30750}
30751
30752/**
30753 @brief WDI_SetBatchScanReq
30754 This API is called to set batch scan request in FW
30755
30756 @param pBatchScanReqParam : pointer to set batch scan re param
30757 usrData : Client context
30758 setBatchScanRspCb : set batch scan resp callback
30759 @see
30760 @return SUCCESS or FAIL
30761*/
30762WDI_Status WDI_SetBatchScanReq
30763(
30764 void *pBatchScanReqParam,
30765 void *usrData,
30766 WDI_SetBatchScanCb setBatchScanRspCb
30767)
30768{
30769 WDI_EventInfoType wdiEventData;
30770
30771 /*sanity check*/
30772 if (eWLAN_PAL_FALSE == gWDIInitialized)
30773 {
30774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30775 "WDI API call before module is initialized - Fail request");
30776
30777 return WDI_STATUS_E_NOT_ALLOWED;
30778 }
30779
30780 /* fill in event data and post to the main FSM */
30781 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30782 wdiEventData.pEventData = pBatchScanReqParam;
30783 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30784 wdiEventData.pCBfnc = setBatchScanRspCb;
30785 wdiEventData.pUserData = usrData;
30786
30787 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30788}
30789
30790/**
30791 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30792
30793 @param None
30794
30795 @see
30796
30797 @return Status of the request
30798*/
30799WDI_Status
30800WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30801{
30802 WDI_EventInfoType wdiEventData;
30803
30804 /*-------------------------------------------------------------------------
30805 Sanity Check
30806 ------------------------------------------------------------------------*/
30807 if (eWLAN_PAL_FALSE == gWDIInitialized)
30808 {
30809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30810 "WDI API call before module is initialized - Fail request!");
30811
30812 return WDI_STATUS_E_NOT_ALLOWED;
30813 }
30814
30815 /*-------------------------------------------------------------------------
30816 Fill in Event data and post to the Main FSM
30817 ------------------------------------------------------------------------*/
30818 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30819 wdiEventData.pEventData = pWdiReq;
30820 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30821 wdiEventData.pCBfnc = NULL;
30822 wdiEventData.pUserData = NULL;
30823
30824 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30825}
30826
30827/**
30828 @brief WDI_TriggerBatchScanResultInd
30829 This API is called to pull batch scan result from FW
30830
30831 @param pWdiReq : pointer to get batch scan ind param
30832 @see
30833 @return SUCCESS or FAIL
30834*/
30835WDI_Status WDI_TriggerBatchScanResultInd
30836(
30837 WDI_TriggerBatchScanResultIndType *pWdiReq
30838)
30839{
30840 WDI_EventInfoType wdiEventData;
30841 /*-------------------------------------------------------------------------
30842 Sanity Check
30843 ------------------------------------------------------------------------*/
30844 if (eWLAN_PAL_FALSE == gWDIInitialized)
30845 {
30846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30847 "WDI API call before module is initialized - Fail request!");
30848
30849 return WDI_STATUS_E_NOT_ALLOWED;
30850 }
30851
30852 /*-------------------------------------------------------------------------
30853 Fill in Event data and post to the Main FSM
30854 ------------------------------------------------------------------------*/
30855 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30856 wdiEventData.pEventData = pWdiReq;
30857 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30858 wdiEventData.pCBfnc = NULL;
30859 wdiEventData.pUserData = NULL;
30860
30861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30862}
Rajeev79dbe4c2013-10-05 11:03:42 +053030863#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030864
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030865/**
30866 @brief Process Update Channel Rsp function (called when a response is
30867 being received over the bus from HAL)
30868
30869 @param pWDICtx: pointer to the WLAN DAL context
30870 pEventData: pointer to the event information structure
30871
30872 @see
30873 @return Result of the function call
30874*/
30875WDI_Status
30876WDI_ProcessUpdateChanRsp
30877(
30878 WDI_ControlBlockType* pWDICtx,
30879 WDI_EventInfoType* pEventData
30880)
30881{
30882 WDI_Status wdiStatus;
30883 eHalStatus halStatus;
30884 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30886
30887 /*-------------------------------------------------------------------------
30888 Sanity check
30889 -------------------------------------------------------------------------*/
30890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30891 ( NULL == pEventData->pEventData))
30892 {
30893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30894 "%s: Invalid parameters", __func__);
30895 WDI_ASSERT(0);
30896 return WDI_STATUS_E_FAILURE;
30897 }
30898
30899 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30900
30901 /*-------------------------------------------------------------------------
30902 Extract response and send it to UMAC
30903 -------------------------------------------------------------------------*/
30904 halStatus = *((eHalStatus*)pEventData->pEventData);
30905 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30906
30907 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30908
30909 return WDI_STATUS_SUCCESS;
30910}/*WDI_ProcessUpdateChanRsp*/
30911
Leo Chang0b0e45a2013-12-15 15:18:55 -080030912#ifdef FEATURE_WLAN_CH_AVOID
30913/**
30914 @brief v -WDI_ProcessChAvoidInd
30915
30916
30917 @param pWDICtx : wdi context
30918 pEventData : indication data
30919 @see
30920 @return Result of the function call
30921*/
30922WDI_Status
30923WDI_ProcessChAvoidInd
30924(
30925 WDI_ControlBlockType* pWDICtx,
30926 WDI_EventInfoType* pEventData
30927)
30928{
30929 WDI_LowLevelIndType wdiInd;
30930 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30931 wpt_uint16 rangeLoop;
30932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30933
30934 /*-------------------------------------------------------------------------
30935 Sanity check
30936 -------------------------------------------------------------------------*/
30937 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30938 (NULL == pEventData->pEventData))
30939 {
30940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30941 "%s: Invalid parameters", __func__);
30942 WDI_ASSERT(0);
30943 return WDI_STATUS_E_FAILURE;
30944 }
30945
30946 /*-------------------------------------------------------------------------
30947 Extract indication and send it to UMAC
30948 -------------------------------------------------------------------------*/
30949 wpalMemoryCopy(&chAvoidIndicationParam,
30950 pEventData->pEventData,
30951 sizeof(tHalAvoidFreqRangeIndParams));
30952
Abhishek Singhe34eb552015-06-18 10:12:15 +053030953 /* Avoid Over flow */
30954 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
30955 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
30956
Leo Chang0b0e45a2013-12-15 15:18:55 -080030957 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30958 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30959 chAvoidIndicationParam.avoidCnt;
30960 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30961 (void *)chAvoidIndicationParam.avoidRange,
30962 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30963 sizeof(WDI_ChAvoidFreqType));
30964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30965 "%s: band count %d", __func__,
30966 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30967 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30968 {
30969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30970 "%s: srart freq %d, end freq %d", __func__,
30971 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30972 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30973 }
30974
30975 /*Notify UMAC*/
30976 if (pWDICtx->wdiLowLevelIndCB)
30977 {
30978 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30979 }
30980
30981 return WDI_STATUS_SUCCESS;
30982}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030983
Leo Chang0b0e45a2013-12-15 15:18:55 -080030984#endif /* FEATURE_WLAN_CH_AVOID */
30985
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030986/**
30987 @brief Process OBSS Start scan result indication
30988
30989 @param pWDICtx: pointer to the WLAN DAL context
30990 pEventData: pointer to the event information structure
30991
30992 @see
30993 @return Result of the function call
30994*/
30995WDI_Status
30996WDI_ProcessHT40OBSSScanInd
30997(
30998 WDI_ControlBlockType* pWDICtx,
30999 WDI_EventInfoType* pEventData
31000)
31001{
31002 wpt_uint8* pSendBuffer = NULL;
31003 wpt_uint16 usDataOffset = 0;
31004 wpt_uint16 usSendSize = 0;
31005 wpt_uint16 usLen = 0;
31006 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31007 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31008 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31009 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31010
31011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31012
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031014 "%s", __func__);
31015
31016 /*-------------------------------------------------------------------------
31017 Sanity check
31018 -------------------------------------------------------------------------*/
31019 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31020 {
31021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31022 "%s: Invalid parameters", __func__);
31023 WDI_ASSERT(0);
31024 return WDI_STATUS_E_FAILURE;
31025 }
31026 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31027
31028 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31029 /*-----------------------------------------------------------------------
31030 Get message buffer
31031 -----------------------------------------------------------------------*/
31032
31033 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31034 WDI_START_HT40_OBSS_SCAN_IND,
31035 sizeof(tHT40ObssScanIndType),
31036 &pSendBuffer, &usDataOffset, &usSendSize))||
31037 ( usSendSize < (usDataOffset + usLen )))
31038 {
31039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31040 "Unable to get send buffer in HT40 OBSS Start req %p ",
31041 pEventData);
31042 WDI_ASSERT(0);
31043 return WDI_STATUS_E_FAILURE;
31044 }
31045 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31046 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31047 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31048 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31049 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31050 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31051 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31052 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31053 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31054 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31055 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31056 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31057 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31058 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31059 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31060 pHT40ObssScanInd->OBSSScanActivityThreshold =
31061 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31062 pHT40ObssScanInd->selfStaIdx =
31063 pwdiHT40OBSSScanInd->selfStaIdx;
31064 pHT40ObssScanInd->bssIdx =
31065 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031066 pHT40ObssScanInd->currentOperatingClass =
31067 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031068 pHT40ObssScanInd->fortyMHZIntolerent =
31069 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31070 pHT40ObssScanInd->channelCount =
31071 pwdiHT40OBSSScanInd->channelCount;
31072
31073 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31074 WDI_ROAM_SCAN_MAX_CHANNELS);
31075 pHT40ObssScanInd->ieFieldLen =
31076 pwdiHT40OBSSScanInd->ieFieldLen;
31077
31078 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31079 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31080 pWDICtx->pReqStatusUserData = NULL;
31081 pWDICtx->pfncRspCB = NULL;
31082
31083 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31084 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31085
31086 /*-------------------------------------------------------------------------
31087 Send OBSS Start Indication to HAL
31088 -------------------------------------------------------------------------*/
31089 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31090 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31091
31092} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31093
31094
31095/**
31096 @brief wdi_HT40OBSSScanInd
31097 This API is called to start OBSS scan
31098
31099 @param pWdiReq : pointer to get ind param
31100 @see
31101 @return SUCCESS or FAIL
31102*/
31103WDI_Status WDI_HT40OBSSScanInd
31104(
31105 WDI_HT40ObssScanParamsType *pWdiReq
31106)
31107{
31108 WDI_EventInfoType wdiEventData;
31109
31110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31111 "%s", __func__);
31112 /*-------------------------------------------------------------------------
31113 Sanity Check
31114 ------------------------------------------------------------------------*/
31115 if (eWLAN_PAL_FALSE == gWDIInitialized)
31116 {
31117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31118 "WDI API call before module is initialized - Fail request!");
31119
31120 return WDI_STATUS_E_NOT_ALLOWED;
31121 }
31122
31123 /*-------------------------------------------------------------------------
31124 Fill in Event data and post to the Main FSM
31125 ------------------------------------------------------------------------*/
31126 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31127 wdiEventData.pEventData = pWdiReq;
31128 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31129 wdiEventData.pCBfnc = NULL;
31130 wdiEventData.pUserData = NULL;
31131
31132
31133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31134}
31135
31136/**
31137 @brief Process OBSS Stop scan result
31138
31139 @param pWDICtx: pointer to the WLAN DAL context
31140 pEventData: pointer to the event information structure
31141
31142 @see
31143 @return Result of the function call
31144*/
31145WDI_Status
31146WDI_ProcessHT40OBSSStopScanInd
31147(
31148 WDI_ControlBlockType* pWDICtx,
31149 WDI_EventInfoType* pEventData
31150)
31151{
31152 wpt_uint8* pSendBuffer = NULL;
31153 wpt_uint16 usDataOffset = 0;
31154 wpt_uint16 usSendSize = 0;
31155 wpt_uint16 usLen = 0;
31156 wpt_uint8 *wdiBssIdx = 0;
31157 tANI_U8 *bssIdx = 0;
31158 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31159
31160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31161
31162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31163 "%s", __func__);
31164
31165 /*-------------------------------------------------------------------------
31166 Sanity check
31167 -------------------------------------------------------------------------*/
31168 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31169 {
31170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31171 "%s: Invalid parameters", __func__);
31172 WDI_ASSERT(0);
31173 return WDI_STATUS_E_FAILURE;
31174 }
31175 bssIdx = (wpt_uint8*)pEventData->pEventData;
31176 /*-----------------------------------------------------------------------
31177 Get message buffer
31178 -----------------------------------------------------------------------*/
31179
31180 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31181 WDI_STOP_HT40_OBSS_SCAN_IND,
31182 sizeof(tANI_U8),
31183 &pSendBuffer, &usDataOffset, &usSendSize))||
31184 ( usSendSize < (usDataOffset + usLen )))
31185 {
31186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31187 "Unable to get send buffer in HT40 OBSS Start req %p ",
31188 pEventData);
31189 WDI_ASSERT(0);
31190 return WDI_STATUS_E_FAILURE;
31191 }
31192
31193 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31194 bssIdx = wdiBssIdx;
31195
31196 pWDICtx->pReqStatusUserData = NULL;
31197 pWDICtx->pfncRspCB = NULL;
31198
31199 /*-------------------------------------------------------------------------
31200 Send DHCP Start Indication to HAL
31201 -------------------------------------------------------------------------*/
31202 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31203 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31204} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31205
31206/**
31207 @brief WDI_HT40OBSSStopScanInd
31208 This API is called to start OBSS scan
31209 @param pWdiReq : pointer to get ind param
31210 @see
31211 @return SUCCESS or FAIL
31212*/
31213WDI_Status WDI_HT40OBSSStopScanInd
31214(
31215 wpt_uint8 bssIdx
31216)
31217{
31218 WDI_EventInfoType wdiEventData;
31219
31220 /*-------------------------------------------------------------------------
31221 Sanity Check
31222 ------------------------------------------------------------------------*/
31223 if (eWLAN_PAL_FALSE == gWDIInitialized)
31224 {
31225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31226 "WDI API call before module is initialized - Fail request!");
31227
31228 return WDI_STATUS_E_NOT_ALLOWED;
31229 }
31230
31231 /*-------------------------------------------------------------------------
31232 Fill in Event data and post to the Main FSM
31233 ------------------------------------------------------------------------*/
31234 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31235 wdiEventData.pEventData = &bssIdx;
31236 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31237 wdiEventData.pCBfnc = NULL;
31238 wdiEventData.pUserData = NULL;
31239
31240 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31241}
31242
c_hpothu86041002014-04-14 19:06:51 +053031243WDI_Status
31244WDI_printRegInfo
31245(
31246 WDI_ControlBlockType* pWDICtx,
31247 WDI_EventInfoType* pEventData
31248)
31249{
31250 tHalRegDebugInfo *pRegTable;
31251 tHalRegDebugInfoParams *pRegParams;
31252 uint32 cnt=0;
31253
31254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31255 "%s: ", __func__);
31256 /*-------------------------------------------------------------------------
31257 Sanity check
31258 -------------------------------------------------------------------------*/
31259 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31260 ( NULL == pEventData->pEventData))
31261 {
31262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31263 "%s: Invalid parameters", __func__);
31264 WDI_ASSERT(0);
31265 return WDI_STATUS_E_FAILURE;
31266 }
31267
31268 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31269
31270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31271 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31272 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31273
31274 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31275
31276 if (pRegParams->regCount <= 0)
31277 {
31278 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31279 "%s incorrect parameters passed", __func__);
31280 return WDI_STATUS_E_FAILURE;
31281 }
31282
31283 while(pRegParams->regCount--)
31284 {
31285 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31286 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31287 cnt++;
31288 }
31289
31290 return WDI_STATUS_SUCCESS;
31291}
c_hpothu92367912014-05-01 15:18:17 +053031292
31293/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031294 * FUNCTION: WDI_delBaInd
31295 * send the delBA to peer.
31296 */
31297
31298WDI_Status
31299WDI_delBaInd
31300(
31301 WDI_ControlBlockType* pWDICtx,
31302 WDI_EventInfoType* pEventData
31303
31304)
31305{
31306 tHalWlanDelBaIndMsg halDelBaInd;
31307 WDI_LowLevelIndType wdiInd;
31308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31309
31310 /*-------------------------------------------------------------------------
31311 Sanity check
31312 -------------------------------------------------------------------------*/
31313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31314 ( NULL == pEventData->pEventData))
31315 {
31316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31317 "%s: Invalid parameters", __func__);
31318 WDI_ASSERT(0);
31319 return WDI_STATUS_E_FAILURE;
31320 }
31321
31322 /*-------------------------------------------------------------------------
31323 Extract indication and send it to UMAC
31324 -------------------------------------------------------------------------*/
31325
31326 /* Parameters need to be unpacked according to HAL struct*/
31327 wpalMemoryCopy( &halDelBaInd,
31328 pEventData->pEventData,
31329 sizeof(halDelBaInd));
31330
31331 /*Fill in the indication parameters*/
31332 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31333
31334 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31335 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31336 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31337
31338 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31339 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31340 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31341
31342 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31343 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31344 if ( pWDICtx->wdiLowLevelIndCB )
31345 {
31346 /*Notify UMAC*/
31347 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31348 }
31349
31350 return WDI_STATUS_SUCCESS;
31351
31352
31353}
31354
31355/*
c_hpothu92367912014-05-01 15:18:17 +053031356 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31357 * send the response to PE with beacon miss count
31358 * received from WDI.
31359 */
31360WDI_Status
31361WDI_ProcessGetBcnMissRateRsp
31362(
31363 WDI_ControlBlockType* pWDICtx,
31364 WDI_EventInfoType* pEventData
31365)
31366{
31367 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31368 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31369
31370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31371 "In %s",__func__);
31372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31373
31374 /*-------------------------------------------------------------------------
31375 Sanity check
31376 -------------------------------------------------------------------------*/
31377 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31378 ( NULL == pEventData->pEventData))
31379 {
31380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31381 "%s: Invalid parameters", __func__);
31382 WDI_ASSERT(0);
31383 return WDI_STATUS_E_FAILURE;
31384 }
31385
31386 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31387 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31388
31389 /*Notify UMAC*/
31390 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31391 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31392 return WDI_STATUS_SUCCESS;
31393}
31394
31395/*
31396 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31397 * Request to WDI to get missed beacon rate.
31398 */
31399WDI_Status
31400WDI_ProcessGetBcnMissRateReq
31401(
31402 WDI_ControlBlockType* pWDICtx,
31403 WDI_EventInfoType* pEventData
31404)
31405{
31406 wpt_uint8* pSendBuffer = NULL;
31407 wpt_uint16 usDataOffset = 0;
31408 wpt_uint16 usSendSize = 0;
31409 wpt_uint8 ucCurrentBSSSesIdx = 0;
31410 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031411 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31412 tHalBcnMissRateReqParams halBcnMissRateReq;
31413
31414/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31415
31416 /*-------------------------------------------------------------------------
31417 Sanity check
31418 -------------------------------------------------------------------------*/
31419 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31420 ( NULL == pEventData->pCBfnc ) )
31421 {
31422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31423 "%s: Invalid parameters", __func__);
31424 WDI_ASSERT(0);
31425 return WDI_STATUS_E_FAILURE;
31426 }
31427
31428 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31429
31430 wpalMutexAcquire(&pWDICtx->wptMutex);
31431
31432 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31433 pEventData->pEventData, &pBSSSes);
31434 if ( NULL == pBSSSes )
31435 {
31436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31437 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031438 MAC_ADDRESS_STR, __func__,
31439 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031440 wpalMutexRelease(&pWDICtx->wptMutex);
31441 return WDI_STATUS_E_NOT_ALLOWED;
31442 }
31443 wpalMutexRelease(&pWDICtx->wptMutex);
31444
31445 /*-----------------------------------------------------------------------
31446 Get message buffer
31447 -----------------------------------------------------------------------*/
31448 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31449 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31450 sizeof(tHalBcnMissRateReqParams),
31451 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31452 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31453 {
31454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31455 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31456 pEventData);
31457 WDI_ASSERT(0);
31458 return WDI_STATUS_E_FAILURE;
31459 }
31460
31461 pWDICtx->wdiReqStatusCB = NULL;
31462 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31463
31464 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31465
31466 wpalMemoryCopy( pSendBuffer+usDataOffset,
31467 &halBcnMissRateReq,
31468 sizeof(tHalBcnMissRateReqParams));
31469 /*-------------------------------------------------------------------------
31470 Send Get STA Request to HAL
31471 -------------------------------------------------------------------------*/
31472 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31473 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31474}
31475
31476/**
31477 @brief WDI_GetBcnMissRate
31478
31479 @param pUserData: user data will be passed back with the
31480 callback
31481 WDI_GetBcnMissRateCb: callback for passing back the response
31482 of the get stats operation received from the device
31483 bssid: bssid, to send bssIdx to FW
31484
31485 @return SUCCESS or FAIL
31486*/
31487WDI_Status WDI_GetBcnMissRate( void *pUserData,
31488 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31489 tANI_U8 *bssid )
31490{
31491 WDI_EventInfoType wdiEventData;
31492
31493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31494
31495 /*------------------------------------------------------------------------
31496 Sanity Check
31497 ------------------------------------------------------------------------*/
31498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31499 {
31500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31501 "WDI API call before module is initialized - Fail request");
31502
31503 return WDI_STATUS_E_NOT_ALLOWED;
31504 }
31505
31506 /*------------------------------------------------------------------------
31507 Fill in Event data and post to the Main FSM
31508 ------------------------------------------------------------------------*/
31509 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31510 wdiEventData.pEventData = bssid;
31511 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31512 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31513 wdiEventData.pUserData = pUserData;
31514
31515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31516}
Abhishek Singh85b74712014-10-08 11:38:19 +053031517
31518/*
31519 * FUNCTION: WDI_ProcessGetFwStatsRsp
31520 * send the response with FW stats asked.
31521 */
31522WDI_Status
31523 WDI_ProcessGetFwStatsRsp
31524(
31525 WDI_ControlBlockType* pWDICtx,
31526 WDI_EventInfoType* pEventData
31527)
31528{
31529 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31530 tpHalfwStatsRspParams pHalFwstatsRsp;
31531 WDI_FWStatsResults fwStats;
31532
31533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31534
31535 /*-------------------------------------------------------------------------
31536 Sanity check
31537 -------------------------------------------------------------------------*/
31538 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31539 ( NULL == pEventData->pEventData))
31540 {
31541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31542 "%s: Invalid parameters", __func__);
31543 WDI_ASSERT(0);
31544 return WDI_STATUS_E_FAILURE;
31545 }
31546 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31547 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31548
31549 if(pHalFwstatsRsp->length)
31550 {
31551 switch( pHalFwstatsRsp->type )
31552 {
31553 case FW_UBSP_STATS:
31554 {
31555 ubspFwStats *ubspStatsfromFw;
31556
31557 fwStats.type = pHalFwstatsRsp->type;
31558 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31559 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31560 ubspStatsfromFw->ubsp_enter_cnt;
31561 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31562 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31563 }
31564 break;
31565 default:
31566 {
31567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31568 "%s: No handling for stats type %d", __func__,
31569 pHalFwstatsRsp->type);
31570 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31571 NULL, pWDICtx->pRspCBUserData);
31572 return WDI_STATUS_E_FAILURE;
31573 }
31574 }
31575 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31576 }
31577 else
31578 {
31579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31580 "%s: Length = 0 for type %d return failure ", __func__,
31581 pHalFwstatsRsp->type);
31582 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31583 NULL, pWDICtx->pRspCBUserData);
31584 return WDI_STATUS_E_FAILURE;
31585 }
31586 return WDI_STATUS_SUCCESS;
31587}
31588
31589/*
31590 * FUNCTION: WDI_ProcessGetFwStatsReq
31591 * Request to WDI to get FW Stats.
31592 */
31593WDI_Status
31594 WDI_ProcessGetFwStatsReq
31595(
31596 WDI_ControlBlockType* pWDICtx,
31597 WDI_EventInfoType* pEventData
31598)
31599{
31600 wpt_uint8* pSendBuffer = NULL;
31601 wpt_uint16 usDataOffset = 0;
31602 wpt_uint16 usSendSize = 0;
31603 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31604 tHalfwStatsReqParams halFwStatsReq;
31605
31606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31607
31608 /*-------------------------------------------------------------------------
31609 Sanity check
31610 -------------------------------------------------------------------------*/
31611 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31612 ( NULL == pEventData->pCBfnc ) )
31613 {
31614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31615 "%s: Invalid parameters", __func__);
31616 WDI_ASSERT(0);
31617 return WDI_STATUS_E_FAILURE;
31618 }
31619
31620 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31621
31622 /*-----------------------------------------------------------------------
31623 Get message buffer
31624 -----------------------------------------------------------------------*/
31625 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31626 pWDICtx, WDI_GET_FW_STATS_REQ,
31627 sizeof(tHalfwStatsReqParams),
31628 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31629 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31630 {
31631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31632 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31633 pEventData);
31634 WDI_ASSERT(0);
31635 return WDI_STATUS_E_FAILURE;
31636 }
31637
31638 pWDICtx->wdiReqStatusCB = NULL;
31639 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31640 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31641 wpalMemoryCopy( pSendBuffer+usDataOffset,
31642 &halFwStatsReq,
31643 sizeof(tHalfwStatsReqParams));
31644 /*-------------------------------------------------------------------------
31645 Send Get STA Request to HAL
31646 -------------------------------------------------------------------------*/
31647 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31648 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31649}
31650
Sunil Duttbd736ed2014-05-26 21:19:41 +053031651#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31652
31653/**
31654 @brief WDI_LLStatsSetReq
31655 This API is called to set link layer stats request in FW
31656
31657 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31658 wdiLLStatsSetRspCb : set link layer stats resp callback
31659 usrData : Client context
31660 @see
31661 @return SUCCESS or FAIL
31662*/
31663WDI_Status
31664WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31665 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31666 void* pUserData)
31667{
31668 WDI_EventInfoType wdiEventData;
31669
31670 /*------------------------------------------------------------------------
31671 Sanity Check
31672 ------------------------------------------------------------------------*/
31673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31674 {
31675 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31676 "WDI API call before module is initialized - Fail request");
31677
31678 return WDI_STATUS_E_NOT_ALLOWED;
31679 }
31680
31681 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31682 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31683 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31684 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31685 wdiEventData.pUserData = pUserData;
31686
31687 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31688}
31689
31690/**
31691 @brief WDI_ProcessLLStatsSetReq -
31692 Set Link Layer Stats request to FW
31693
31694 @param pWDICtx : wdi context
31695 pEventData : indication data
31696
31697 @see
31698 @return none
31699*/
31700WDI_Status
31701WDI_ProcessLLStatsSetReq
31702(
31703 WDI_ControlBlockType* pWDICtx,
31704 WDI_EventInfoType* pEventData
31705)
31706{
31707 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31708 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31709 wpt_uint8* pSendBuffer = NULL;
31710 wpt_uint16 usSendSize = 0;
31711 wpt_uint16 usDataOffset = 0;
31712 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31713
31714 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31715 ( NULL == pEventData->pCBfnc ))
31716 {
31717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31718 "%s: Invalid parameters", __func__);
31719 WDI_ASSERT(0);
31720 return WDI_STATUS_E_FAILURE;
31721 }
31722
31723 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31724 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31725
31726 /*-----------------------------------------------------------------------
31727 Get message buffer
31728 ! TO DO : proper conversion into the HAL Message Request Format
31729 -----------------------------------------------------------------------*/
31730 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31731 pWDICtx,
31732 WDI_LL_STATS_SET_REQ,
31733 sizeof(tHalMacLlSetStatsReqParams),
31734 &pSendBuffer, &usDataOffset,
31735 &usSendSize))||
31736 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31737 {
31738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31739 "Unable to get send buffer in %s %p %p %p", __func__,
31740 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31741 WDI_ASSERT(0);
31742 return WDI_STATUS_E_FAILURE;
31743 }
31744
31745
Dino Mycled3d50022014-07-07 12:58:25 +053031746 /* Need to fill in the self STA Index */
31747 if ( WDI_STATUS_SUCCESS !=
31748 WDI_STATableFindStaidByAddr(pWDICtx,
31749 pwdiLLStatsSetReqParams->macAddr,
31750 &halLLStatsSetParams.sta_id))
31751 {
31752 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31753 MAC_ADDRESS_STR
31754 ": This station does not exist in the WDI Station Table",
31755 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31756
31757 wpalMemoryFree(pSendBuffer);
31758 return WDI_STATUS_E_FAILURE;
31759 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031760
31761 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031762 halLLStatsSetParams.mpdu_size_threshold =
31763 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31764 halLLStatsSetParams.aggressive_statistics_gathering =
31765 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31766
31767 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31768 " halLLStatsSetParams.req_id = %u",
31769 halLLStatsSetParams.req_id);
31770 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31771 " halLLStatsSetParams.sta_id = %u",
31772 halLLStatsSetParams.sta_id);
31773 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31774 " halLLStatsSetParams.mpdu_size_threshold = %u",
31775 halLLStatsSetParams.mpdu_size_threshold);
31776 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31777 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31778 halLLStatsSetParams.aggressive_statistics_gathering);
31779
31780 wpalMemoryCopy(pSendBuffer+usDataOffset,
31781 &halLLStatsSetParams,
31782 sizeof(halLLStatsSetParams));
31783
31784 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31785
31786 /*-------------------------------------------------------------------------
31787 Send Clear Link Layer Stats Request to HAL
31788 -------------------------------------------------------------------------*/
31789 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31790 wdiLLStatsSetCb, pEventData->pUserData,
31791 WDI_LL_STATS_SET_RSP);
31792}
31793
31794/**
31795 @brief WDI_LLStatsGetReq
31796 This API is called to get link layer stats request in FW
31797
31798 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31799 wdiLLStatsGetRspCb : get link layer stats resp callback
31800 usrData : Client context
31801 @see
31802 @return SUCCESS or FAIL
31803*/
31804WDI_Status
31805WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31806 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31807 void* pUserData)
31808{
31809 WDI_EventInfoType wdiEventData;
31810
31811 /*------------------------------------------------------------------------
31812 Sanity Check
31813 ------------------------------------------------------------------------*/
31814 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31815 {
31816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31817 "WDI API call before module is initialized - Fail request");
31818
31819 return WDI_STATUS_E_NOT_ALLOWED;
31820 }
31821
31822 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31823 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31824 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31825 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31826 wdiEventData.pUserData = pUserData;
31827
31828 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31829}
31830
31831/**
31832 @brief WDI_ProcessLLStatsGetReq -
31833 Get Link Layer Stats request to FW
31834
31835 @param pWDICtx : wdi context
31836 pEventData : indication data
31837
31838 @see
31839 @return none
31840*/
31841WDI_Status
31842WDI_ProcessLLStatsGetReq
31843(
31844 WDI_ControlBlockType* pWDICtx,
31845 WDI_EventInfoType* pEventData
31846)
31847{
31848 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31849 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31850 wpt_uint8* pSendBuffer = NULL;
31851 wpt_uint16 usSendSize = 0;
31852 wpt_uint16 usDataOffset = 0;
31853 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31854
31855 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31856 ( NULL == pEventData->pCBfnc ))
31857 {
31858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31859 "%s: Invalid parameters", __func__);
31860 WDI_ASSERT(0);
31861 return WDI_STATUS_E_FAILURE;
31862 }
31863
31864 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31865 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31866
31867 /*-----------------------------------------------------------------------
31868 Get message buffer
31869 ! TO DO : proper conversion into the HAL Message Request Format
31870 -----------------------------------------------------------------------*/
31871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31872 pWDICtx,
31873 WDI_LL_STATS_GET_REQ,
31874 sizeof(tHalMacLlGetStatsReqParams),
31875 &pSendBuffer, &usDataOffset,
31876 &usSendSize))||
31877 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31878 {
31879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31880 "Unable to get send buffer in %s %p %p %p", __func__,
31881 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31882 WDI_ASSERT(0);
31883 return WDI_STATUS_E_FAILURE;
31884 }
Dino Mycled3d50022014-07-07 12:58:25 +053031885 /* Need to fill in the self STA Index */
31886 if ( WDI_STATUS_SUCCESS !=
31887 WDI_STATableFindStaidByAddr(pWDICtx,
31888 pwdiLLStatsGetReqParams->macAddr,
31889 &halLLStatsGetParams.sta_id))
31890 {
31891 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31892 MAC_ADDRESS_STR
31893 ": This station does not exist in the WDI Station Table",
31894 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31895
31896 wpalMemoryFree(pSendBuffer);
31897 return WDI_STATUS_E_FAILURE;
31898 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031899
31900 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031901 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31902
31903 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31904 " halLLStatsGetParams.req_id = %u",
31905 halLLStatsGetParams.req_id);
31906 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31907 " halLLStatsGetParams.staId = %u",
31908 halLLStatsGetParams.sta_id);
31909 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31910 " halLLStatsGetParams.Mask = %u",
31911 halLLStatsGetParams.param_id_mask);
31912
31913 wpalMemoryCopy(pSendBuffer+usDataOffset,
31914 &halLLStatsGetParams,
31915 sizeof(halLLStatsGetParams));
31916
31917 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31918
31919 /*-------------------------------------------------------------------------
31920 Send Clear Link Layer Stats Request to HAL
31921 -------------------------------------------------------------------------*/
31922 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31923 wdiLLStatsGetCb, pEventData->pUserData,
31924 WDI_LL_STATS_GET_RSP);
31925}
31926
31927/**
31928 @brief WDI_LLStatsClearReq
31929 This API is called to clear link layer stats request in FW
31930
31931 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31932 wdiLLStatsSetRspCb : clear link layer stats resp callback
31933 usrData : Client context
31934 @see
31935 @return SUCCESS or FAIL
31936*/
31937WDI_Status
31938WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31939 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31940 void* pUserData)
31941{
31942 WDI_EventInfoType wdiEventData;
31943
31944 /*------------------------------------------------------------------------
31945 Sanity Check
31946 ------------------------------------------------------------------------*/
31947 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31948 {
31949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31950 "WDI API call before module is initialized - Fail request");
31951
31952 return WDI_STATUS_E_NOT_ALLOWED;
31953 }
31954
31955 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31956 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31957 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31958 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31959 wdiEventData.pUserData = pUserData;
31960
31961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31962 "%s:%d Enter", __func__, __LINE__);
31963
31964 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31965}
31966
31967/**
31968 @brief WDI_ProcessLLStatsClearReq -
31969 Clear Link Layer Stats request to FW
31970
31971 @param pWDICtx : wdi context
31972 pEventData : indication data
31973
31974 @see
31975 @return none
31976*/
31977WDI_Status
31978WDI_ProcessLLStatsClearReq
31979(
31980 WDI_ControlBlockType* pWDICtx,
31981 WDI_EventInfoType* pEventData
31982)
31983{
31984 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31985 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31986 wpt_uint8* pSendBuffer = NULL;
31987 wpt_uint16 usSendSize = 0;
31988 wpt_uint16 usDataOffset = 0;
31989 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31990
31991 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31992 ( NULL == pEventData->pCBfnc ))
31993 {
31994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31995 "%s: Invalid parameters", __func__);
31996 WDI_ASSERT(0);
31997 return WDI_STATUS_E_FAILURE;
31998 }
31999
32000 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32001 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32002
32003 /*-----------------------------------------------------------------------
32004 Get message buffer
32005 ! TO DO : proper conversion into the HAL Message Request Format
32006 -----------------------------------------------------------------------*/
32007 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32008 pWDICtx,
32009 WDI_LL_STATS_CLEAR_REQ,
32010 sizeof(tHalMacLlClearStatsReqParams),
32011 &pSendBuffer, &usDataOffset,
32012 &usSendSize))||
32013 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32014 {
32015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32016 "Unable to get send buffer in %s %p %p %p", __func__,
32017 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32018 WDI_ASSERT(0);
32019 return WDI_STATUS_E_FAILURE;
32020 }
Dino Mycled3d50022014-07-07 12:58:25 +053032021 /* Need to fill in the self STA Index */
32022 if ( WDI_STATUS_SUCCESS !=
32023 WDI_STATableFindStaidByAddr(pWDICtx,
32024 pwdiLLStatsClearReqParams->macAddr,
32025 &halLLStatsClearParams.sta_id))
32026 {
32027 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32028 MAC_ADDRESS_STR
32029 ": This station does not exist in the WDI Station Table",
32030 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32031
32032 wpalMemoryFree(pSendBuffer);
32033 return WDI_STATUS_E_FAILURE;
32034 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032035
32036 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032037 halLLStatsClearParams.stats_clear_req_mask =
32038 pwdiLLStatsClearReqParams->statsClearReqMask;
32039 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32040
32041 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32042 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32043 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32044 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32045 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32046 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32047 halLLStatsClearParams.stats_clear_req_mask);
32048 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32049 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32050
32051 wpalMemoryCopy(pSendBuffer+usDataOffset,
32052 &halLLStatsClearParams,
32053 sizeof(halLLStatsClearParams));
32054
32055 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32056
32057 /*-------------------------------------------------------------------------
32058 Send Clear Link Layer Stats Request to HAL
32059 -------------------------------------------------------------------------*/
32060 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32061 wdiLLStatsClearCb, pEventData->pUserData,
32062 WDI_LL_STATS_CLEAR_RSP);
32063}
32064#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032065
Abhishek Singh85b74712014-10-08 11:38:19 +053032066WDI_Status WDI_FWStatsGetReq( void* pUserData,
32067 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32068 wpt_uint32 stats)
32069{
32070 WDI_EventInfoType wdiEventData;
32071
32072 /*------------------------------------------------------------------------
32073 Sanity Check
32074 ------------------------------------------------------------------------*/
32075 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32076 {
32077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32078 "WDI API call before module is initialized - Fail request");
32079 return WDI_STATUS_E_NOT_ALLOWED;
32080 }
32081 /*------------------------------------------------------------------------
32082 Fill in Event data and post to the Main FSM
32083 ------------------------------------------------------------------------*/
32084 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32085 wdiEventData.pEventData = (void *)&stats;
32086 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32087 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32088 wdiEventData.pUserData = pUserData;
32089
32090 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32091
32092}
32093
Katya Nigamf0511f62015-05-05 16:40:57 +053032094WDI_Status
32095WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
32096 WDI_MonStartRspCb wdiMonStartRspCb,
32097 void* pUserData)
32098{
32099 WDI_EventInfoType wdiEventData;
32100
32101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32102 "%s", __func__);
32103
32104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32105 {
32106 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32107 "WDI API call before module is initialized - Fail request");
32108
32109 return WDI_STATUS_E_NOT_ALLOWED;
32110 }
32111
32112 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32113 wdiEventData.pEventData = pwdiMonStartReqParams;
32114 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
32115 wdiEventData.pCBfnc = wdiMonStartRspCb;
32116 wdiEventData.pUserData = pUserData;
32117
32118 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32119}
32120
32121WDI_Status
32122WDI_ProcessMonStartReq
32123(
32124 WDI_ControlBlockType* pWDICtx,
32125 WDI_EventInfoType* pEventData
32126)
32127{
32128 WDI_MonStartReqType* pwdiMonStartReqParams;
32129 WDI_MonStartRspCb wdiMonStartCb;
32130 wpt_uint8* pSendBuffer = NULL;
32131 wpt_uint16 usSendSize = 0;
32132 wpt_uint16 usDataOffset = 0;
32133 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32134
32135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32136 "%s", __func__);
32137
32138 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32139 ( NULL == pEventData->pCBfnc ))
32140 {
32141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32142 "%s: Invalid parameters", __func__);
32143 WDI_ASSERT(0);
32144 return WDI_STATUS_E_FAILURE;
32145 }
32146
32147 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
32148 wdiMonStartCb = (WDI_MonStartRspCb)pEventData->pCBfnc;
32149
32150 /*-----------------------------------------------------------------------
32151 Get message buffer
32152 ! TO DO : proper conversion into the HAL Message Request Format
32153 -----------------------------------------------------------------------*/
32154 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32155 pWDICtx,
32156 WDI_MON_START_REQ,
32157 sizeof(tHalEnableMonitorModeReqParams),
32158 &pSendBuffer, &usDataOffset,
32159 &usSendSize))||
32160 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32161 {
32162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32163 "Unable to get send buffer in %s %p %p %p", __func__,
32164 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32165 WDI_ASSERT(0);
32166 return WDI_STATUS_E_FAILURE;
32167 }
32168
32169 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32170 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32171 pwdiMonStartReqParams->ChannelBW);
32172 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32173 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32174 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32175 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32176 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32177 pwdiMonStartReqParams->mmFilters[0].macAddr,
32178 sizeof( wpt_macAddr ));
32179 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32180 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32181 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32182 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32183
32184 wpalMemoryCopy(pSendBuffer+usDataOffset,
32185 &halEnableMonitorModeParams,
32186 sizeof(halEnableMonitorModeParams));
32187
32188 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32189
32190 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32191 wdiMonStartCb, pEventData->pUserData,
32192 WDI_MON_START_RSP);
32193}
32194
32195WDI_Status
32196WDI_ProcessMonStartRsp
32197(
32198 WDI_ControlBlockType* pWDICtx,
32199 WDI_EventInfoType* pEventData
32200)
32201{
32202 WDI_MonStartRspCb wdiMonStartRspCb;
32203
32204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32205 "%s: Enter ", __func__);
32206 /*-------------------------------------------------------------------------
32207 Sanity check
32208 -------------------------------------------------------------------------*/
32209 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32210 ( NULL == pEventData->pEventData))
32211 {
32212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32213 "%s: Invalid parameters", __func__);
32214 WDI_ASSERT(0);
32215 return WDI_STATUS_E_FAILURE;
32216 }
32217
32218 wdiMonStartRspCb = (WDI_MonStartRspCb)pWDICtx->pfncRspCB;
32219
32220 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32221
32222 return WDI_STATUS_SUCCESS;
32223}
32224
32225WDI_Status
32226WDI_MonStopReq(WDI_MonStopRspCb wdiMonStopRspCb,
32227 void* pUserData)
32228{
32229 WDI_EventInfoType wdiEventData;
32230
32231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32232 "%s", __func__);
32233
32234 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32235 {
32236 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32237 "WDI API call before module is initialized - Fail request");
32238
32239 return WDI_STATUS_E_NOT_ALLOWED;
32240 }
32241
32242 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32243 wdiEventData.pEventData = NULL;
32244 wdiEventData.uEventDataSize = sizeof(NULL);
32245 wdiEventData.pCBfnc = wdiMonStopRspCb;
32246 wdiEventData.pUserData = pUserData;
32247
32248 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32249}
32250
32251WDI_Status
32252WDI_ProcessMonStopReq
32253(
32254 WDI_ControlBlockType* pWDICtx,
32255 WDI_EventInfoType* pEventData
32256)
32257{
32258 WDI_MonStopRspCb wdiMonStopCb;
32259 wpt_uint8* pSendBuffer = NULL;
32260 wpt_uint16 usSendSize = 0;
32261 wpt_uint16 usDataOffset = 0;
32262 wpt_uint8 resetConfiguration;
32263
32264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32265 "%s", __func__);
32266
32267 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32268 {
32269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32270 "%s: Invalid parameters", __func__);
32271 WDI_ASSERT(0);
32272 return WDI_STATUS_E_FAILURE;
32273 }
32274
32275 wdiMonStopCb = (WDI_MonStopRspCb)pEventData->pCBfnc;
32276
32277 /*-----------------------------------------------------------------------
32278 Get message buffer
32279 ! TO DO : proper conversion into the HAL Message Request Format
32280 -----------------------------------------------------------------------*/
32281 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32282 pWDICtx,
32283 WDI_MON_STOP_REQ,
32284 sizeof(wpt_uint8),
32285 &pSendBuffer, &usDataOffset,
32286 &usSendSize))||
32287 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32288 {
32289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32290 "Unable to get send buffer in %s %p %p", __func__,
32291 pEventData, wdiMonStopCb);
32292 WDI_ASSERT(0);
32293 return WDI_STATUS_E_FAILURE;
32294 }
32295
32296 wpalMemoryCopy(pSendBuffer+usDataOffset,
32297 &resetConfiguration,
32298 sizeof(wpt_uint8));
32299
32300 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32301
32302 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32303 wdiMonStopCb, pEventData->pUserData,
32304 WDI_MON_STOP_RSP);
32305}
32306
32307WDI_Status
32308WDI_ProcessMonStopRsp
32309(
32310 WDI_ControlBlockType* pWDICtx,
32311 WDI_EventInfoType* pEventData
32312)
32313{
32314 WDI_MonStopRspCb wdiMonStopRspCb;
32315
32316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32317 "%s: Enter ", __func__);
32318 /*-------------------------------------------------------------------------
32319 Sanity check
32320 -------------------------------------------------------------------------*/
32321 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32322 {
32323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32324 "%s: Invalid parameters", __func__);
32325 WDI_ASSERT(0);
32326 return WDI_STATUS_E_FAILURE;
32327 }
32328
32329 wdiMonStopRspCb = (WDI_MonStopRspCb)pWDICtx->pfncRspCB;
32330
32331 wdiMonStopRspCb(pWDICtx->pRspCBUserData);
32332
32333 return WDI_STATUS_SUCCESS;
32334}
32335
Dino Mycle41bdc942014-06-10 11:30:24 +053032336#ifdef WLAN_FEATURE_EXTSCAN
32337
32338/**
32339 @brief Process EXTSCAN BUffer full indication from FW
32340
32341 @param pWDICtx: pointer to the WLAN DAL context
32342 pEventData: pointer to the event information structure
32343
32344 @see
32345 @return Result of the function call
32346*/
32347WDI_Status
32348WDI_ProcessEXTScanProgressInd
32349(
32350 WDI_ControlBlockType* pWDICtx,
32351 WDI_EventInfoType* pEventData
32352)
32353{
32354 WDI_LowLevelIndType wdiInd;
32355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32356
32357 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32358 "%s: ", __func__);
32359
32360 /* sanity check */
32361 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32362 ( NULL == pEventData->pEventData))
32363 {
32364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32365 "%s: Invalid parameters", __func__);
32366 WDI_ASSERT(0);
32367 return WDI_STATUS_E_FAILURE;
32368 }
32369
32370 /* Fill in the indication parameters */
32371 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32372
32373 /* extract response and send it to UMAC */
32374 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32375
32376 /* Notify UMAC */
32377 if (pWDICtx->wdiLowLevelIndCB)
32378 {
32379 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32380 }
32381 else
32382 {
Dino Mycled3d50022014-07-07 12:58:25 +053032383 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032384 "%s: WDILowLevelIndCb is null", __func__);
32385 WDI_ASSERT(0);
32386 return WDI_STATUS_E_FAILURE;
32387 }
32388 return WDI_STATUS_SUCCESS;
32389
32390} /* End of WDI_ProcessEXTScanProgressInd */
32391
32392
32393/**
32394 @brief Process EXTScan Scan Available indication from FW
32395
32396 @param pWDICtx: pointer to the WLAN DAL context
32397 pEventData: pointer to the event information structure
32398
32399 @see
32400 @return Result of the function call
32401*/
32402WDI_Status
32403WDI_ProcessEXTScanScanAvailableInd
32404(
32405 WDI_ControlBlockType* pWDICtx,
32406 WDI_EventInfoType* pEventData
32407)
32408{
32409 WDI_LowLevelIndType wdiInd;
32410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32411
32412 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32413 "%s: ", __func__);
32414
32415 /* sanity check */
32416 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32417 ( NULL == pEventData->pEventData))
32418 {
32419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32420 "%s: Invalid parameters", __func__);
32421 WDI_ASSERT(0);
32422 return WDI_STATUS_E_FAILURE;
32423 }
32424
32425
32426
32427 /* Fill in the indication parameters */
32428 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32429
32430 /* extract response and send it to UMAC */
32431 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32432
32433 /* Notify UMAC */
32434 if (pWDICtx->wdiLowLevelIndCB)
32435 {
32436 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32437 }
32438 else
32439 {
32440 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32441 "%s: WDILowLevelIndCb is null", __func__);
32442 WDI_ASSERT(0);
32443 return WDI_STATUS_E_FAILURE;
32444 }
32445 return WDI_STATUS_SUCCESS;
32446} /* End of WDI_ProcessEXTScanScanDoneInd */
32447
32448/**
32449 @brief Process EXTScan Result Indication indication from FW
32450
32451 @param pWDICtx: pointer to the WLAN DAL context
32452 pEventData: pointer to the event information structure
32453
32454 @see
32455 @return Result of the function call
32456*/
32457WDI_Status
32458WDI_ProcessEXTScanResultInd
32459(
32460 WDI_ControlBlockType* pWDICtx,
32461 WDI_EventInfoType* pEventData
32462)
32463{
32464 WDI_LowLevelIndType wdiInd;
32465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32466
32467 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32468 "%s: ", __func__);
32469
32470 /* sanity check */
32471 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32472 ( NULL == pEventData->pEventData))
32473 {
32474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32475 "%s: Invalid parameters", __func__);
32476 WDI_ASSERT(0);
32477 return WDI_STATUS_E_FAILURE;
32478 }
32479
32480 /* Fill in the indication parameters */
32481 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32482
32483 /* extract response and send it to UMAC */
32484 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32485
32486 /* Notify UMAC */
32487 if (pWDICtx->wdiLowLevelIndCB)
32488 {
32489 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32490 }
32491 else
32492 {
32493 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32494 "%s: WDILowLevelIndCb is null", __func__);
32495 WDI_ASSERT(0);
32496 return WDI_STATUS_E_FAILURE;
32497 }
32498 return WDI_STATUS_SUCCESS;
32499} /* End of WDI_ProcessEXTScanResultInd */
32500
32501/**
32502 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32503
32504 @param pWDICtx: pointer to the WLAN DAL context
32505 pEventData: pointer to the event information structure
32506
32507 @see
32508 @return Result of the function call
32509*/
32510WDI_Status
32511WDI_ProcessEXTScanBssidHotListResultInd
32512(
32513 WDI_ControlBlockType* pWDICtx,
32514 WDI_EventInfoType* pEventData
32515)
32516{
32517 WDI_LowLevelIndType wdiInd;
32518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32519
32520 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32521 "%s: ", __func__);
32522
32523 /* sanity check */
32524 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32525 ( NULL == pEventData->pEventData))
32526 {
32527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32528 "%s: Invalid parameters", __func__);
32529 WDI_ASSERT(0);
32530 return WDI_STATUS_E_FAILURE;
32531 }
32532
32533 /* Fill in the indication parameters */
32534 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32535
32536 /* extract response and send it to UMAC */
32537 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32538
32539 /* Notify UMAC */
32540 if (pWDICtx->wdiLowLevelIndCB)
32541 {
32542 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32543 }
32544 else
32545 {
32546 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32547 "%s: WDILowLevelIndCb is null", __func__);
32548 WDI_ASSERT(0);
32549 return WDI_STATUS_E_FAILURE;
32550 }
32551 return WDI_STATUS_SUCCESS;
32552} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32553
32554/**
32555 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32556
32557 @param pWDICtx: pointer to the WLAN DAL context
32558 pEventData: pointer to the event information structure
32559
32560 @see
32561 @return Result of the function call
32562*/
32563WDI_Status
32564WDI_ProcessEXTScanSignfRssiResultInd
32565(
32566 WDI_ControlBlockType* pWDICtx,
32567 WDI_EventInfoType* pEventData
32568)
32569{
32570 WDI_LowLevelIndType wdiInd;
32571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32572
32573 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32574 "%s: ", __func__);
32575
32576 /* sanity check */
32577 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32578 ( NULL == pEventData->pEventData))
32579 {
32580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32581 "%s: Invalid parameters", __func__);
32582 WDI_ASSERT(0);
32583 return WDI_STATUS_E_FAILURE;
32584 }
32585
32586 /* Fill in the indication parameters */
32587 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32588
32589 /* extract response and send it to UMAC */
32590 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32591
32592 /* Notify UMAC */
32593 if (pWDICtx->wdiLowLevelIndCB)
32594 {
32595 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32596 }
32597 else
32598 {
32599 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32600 "%s: WDILowLevelIndCb is null", __func__);
32601 WDI_ASSERT(0);
32602 return WDI_STATUS_E_FAILURE;
32603 }
32604 return WDI_STATUS_SUCCESS;
32605} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32606
32607/**
32608 @brief WDI_EXTScanGetCapabilitiesReq
32609
32610 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32611 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32612 of the Req operation received from the device
32613 pUserData: user data will be passed back with the callback
32614
32615 @return SUCCESS or FAIL
32616*/
32617WDI_Status
32618WDI_EXTScanGetCapabilitiesReq(
32619 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32620 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32621 void* pUserData)
32622{
32623 WDI_EventInfoType wdiEventData;
32624
32625 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32626 "%s: %d ",__func__, __LINE__);
32627 /*------------------------------------------------------------------------
32628 Sanity Check
32629 ------------------------------------------------------------------------*/
32630 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32631 {
32632 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32633 "WDI API call before module is initialized - Fail request");
32634
32635 return WDI_STATUS_E_NOT_ALLOWED;
32636 }
32637
32638 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32639 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32640 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32641 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32642 wdiEventData.pUserData = pUserData;
32643
32644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32645}
32646
32647/**
32648 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32649 Extended Scan Get Capability request to FW
32650
32651 @param pWDICtx : wdi context
32652 pEventData : indication data
32653
32654 @see
32655 @return none
32656*/
32657WDI_Status
32658WDI_ProcessEXTScanGetCapabilitiesReq
32659(
32660 WDI_ControlBlockType* pWDICtx,
32661 WDI_EventInfoType* pEventData
32662)
32663{
32664 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32665 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32666 wpt_uint8* pSendBuffer = NULL;
32667 wpt_uint16 usSendSize = 0;
32668 wpt_uint16 usDataOffset = 0;
32669 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32670
32671 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32672 "%s: %d Enter",__func__, __LINE__);
32673
32674 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32675 ( NULL == pEventData->pCBfnc ))
32676 {
32677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32678 "%s: Invalid parameters", __func__);
32679 WDI_ASSERT(0);
32680 return WDI_STATUS_E_FAILURE;
32681 }
32682
32683 pwdiEXTScanGetCapabilitiesReqParams =
32684 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32685 wdiEXTScanGetCapabilitiesRspCb =
32686 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32687
32688 /*-----------------------------------------------------------------------
32689 Get message buffer
32690 ! TO DO : proper conversion into the HAL Message Request Format
32691 -----------------------------------------------------------------------*/
32692 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32693 pWDICtx,
32694 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32695 sizeof(halEXTScanGetCapReqParams),
32696 &pSendBuffer, &usDataOffset,
32697 &usSendSize))||
32698 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32699 {
32700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32701 "Unable to get send buffer in %s %p %p %p", __func__,
32702 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32703 wdiEXTScanGetCapabilitiesRspCb);
32704 WDI_ASSERT(0);
32705 return WDI_STATUS_E_FAILURE;
32706 }
32707
32708 halEXTScanGetCapReqParams.requestId =
32709 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32710 halEXTScanGetCapReqParams.sessionId =
32711 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32712
32713 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32714 " requestId %u "
32715 " sessionId %u ",
32716 halEXTScanGetCapReqParams.requestId,
32717 halEXTScanGetCapReqParams.sessionId);
32718
32719 wpalMemoryCopy(pSendBuffer+usDataOffset,
32720 &halEXTScanGetCapReqParams,
32721 sizeof(halEXTScanGetCapReqParams));
32722
32723 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32724
32725
32726 /*-------------------------------------------------------------------------
32727 Send EXTScan Stop Request to HAL
32728 -------------------------------------------------------------------------*/
32729 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32730 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32731 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32732}
32733
32734/**
32735 @brief WDI_EXTScanGetCachedResultsReq
32736
32737 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32738 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32739 of the Req operation received from the device
32740 pUserData: user data will be passed back with the callback
32741
32742 @return SUCCESS or FAIL
32743*/
32744
32745WDI_Status
32746WDI_EXTScanGetCachedResultsReq(
32747 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32748 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32749 void* pUserData)
32750{
32751 WDI_EventInfoType wdiEventData;
32752
32753 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32754 "%s: %d Enter",__func__, __LINE__);
32755 /*------------------------------------------------------------------------
32756 Sanity Check
32757 ------------------------------------------------------------------------*/
32758 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32759 {
32760 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32761 "WDI API call before module is initialized - Fail request");
32762
32763 return WDI_STATUS_E_NOT_ALLOWED;
32764 }
32765
32766 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32767 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32768 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32769 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32770 wdiEventData.pUserData = pUserData;
32771
32772 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32773}
32774
32775/**
32776 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32777 Extended Scan Get Cached Result request to FW
32778
32779 @param pWDICtx : wdi context
32780 pEventData : indication data
32781
32782 @see
32783 @return none
32784*/
32785WDI_Status
32786WDI_ProcessEXTScanGetCachedResultsReq
32787(
32788 WDI_ControlBlockType* pWDICtx,
32789 WDI_EventInfoType* pEventData
32790)
32791{
32792 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32793 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32794 wpt_uint8* pSendBuffer = NULL;
32795 wpt_uint16 usSendSize = 0;
32796 wpt_uint16 usDataOffset = 0;
32797 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32798
32799 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32800 "%s: %d Enter",__func__, __LINE__);
32801
32802 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32803 ( NULL == pEventData->pCBfnc ))
32804 {
32805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32806 "%s: Invalid parameters", __func__);
32807 WDI_ASSERT(0);
32808 return WDI_STATUS_E_FAILURE;
32809 }
32810
32811 pwdiEXTScanGetCachedResultsReqParams =
32812 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32813 wdiEXTScanGetCachedResultsCb =
32814 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32815
32816 /*-----------------------------------------------------------------------
32817 Get message buffer
32818 ! TO DO : proper conversion into the HAL Message Request Format
32819 -----------------------------------------------------------------------*/
32820 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32821 pWDICtx,
32822 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32823 sizeof(tHalExtScanGetScanReq),
32824 &pSendBuffer, &usDataOffset,
32825 &usSendSize))||
32826 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32827 {
32828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32829 "Unable to get send buffer in %s %p %p %p", __func__,
32830 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32831 wdiEXTScanGetCachedResultsCb);
32832 WDI_ASSERT(0);
32833 return WDI_STATUS_E_FAILURE;
32834 }
32835
32836 halEXTScanGetScanReqParams.requestId =
32837 pwdiEXTScanGetCachedResultsReqParams->requestId;
32838 halEXTScanGetScanReqParams.sessionId =
32839 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32840 halEXTScanGetScanReqParams.flush =
32841 pwdiEXTScanGetCachedResultsReqParams->flush;
32842
32843 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32844 " requestId %u "
32845 " sessionId %u "
32846 " flush %u ",
32847 halEXTScanGetScanReqParams.requestId,
32848 halEXTScanGetScanReqParams.sessionId,
32849 halEXTScanGetScanReqParams.flush);
32850
32851 wpalMemoryCopy(pSendBuffer+usDataOffset,
32852 &halEXTScanGetScanReqParams,
32853 sizeof(halEXTScanGetScanReqParams));
32854
32855 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32856
32857
32858 /*-------------------------------------------------------------------------
32859 Send EXTScan Stop Request to HAL
32860 -------------------------------------------------------------------------*/
32861 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32862 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32863 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32864}
32865
32866/**
32867 @brief WDI_EXTScanStopReq
32868
32869 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32870 WDI_EXTScanStopRspCb: callback for passing back the response
32871 of the Req operation received from the device
32872 pUserData: user data will be passed back with the callback
32873
32874 @return SUCCESS or FAIL
32875*/
32876WDI_Status
32877WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32878 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32879 void* pUserData)
32880{
32881 WDI_EventInfoType wdiEventData;
32882
32883 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32884 "%s: %d ",__func__, __LINE__);
32885 /*------------------------------------------------------------------------
32886 Sanity Check
32887 ------------------------------------------------------------------------*/
32888 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32889 {
32890 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32891 "WDI API call before module is initialized - Fail request");
32892
32893 return WDI_STATUS_E_NOT_ALLOWED;
32894 }
32895
32896 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32897 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32898 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32899 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32900 wdiEventData.pUserData = pUserData;
32901
32902 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32903}
32904
32905/**
32906 @brief WDI_ProcessEXTScanStopReq -
32907 Extended Scan Stop request to FW
32908
32909 @param pWDICtx : wdi context
32910 pEventData : indication data
32911
32912 @see
32913 @return none
32914*/
32915WDI_Status
32916WDI_ProcessEXTScanStopReq
32917(
32918 WDI_ControlBlockType* pWDICtx,
32919 WDI_EventInfoType* pEventData
32920)
32921{
32922 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32923 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32924 wpt_uint8* pSendBuffer = NULL;
32925 wpt_uint16 usSendSize = 0;
32926 wpt_uint16 usDataOffset = 0;
32927 tHalExtScanStopReq halEXTScanStopReqParams;
32928
32929 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32930 "%s: %d ",__func__, __LINE__);
32931
32932 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32933 ( NULL == pEventData->pCBfnc ))
32934 {
32935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32936 "%s: Invalid parameters", __func__);
32937 WDI_ASSERT(0);
32938 return WDI_STATUS_E_FAILURE;
32939 }
32940
32941 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32942 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32943
32944 /*-----------------------------------------------------------------------
32945 Get message buffer
32946 ! TO DO : proper conversion into the HAL Message Request Format
32947 -----------------------------------------------------------------------*/
32948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32949 pWDICtx,
32950 WDI_EXTSCAN_STOP_REQ,
32951 sizeof(tHalExtScanStopReq),
32952 &pSendBuffer, &usDataOffset,
32953 &usSendSize))||
32954 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32955 {
32956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32957 "Unable to get send buffer in %s %p %p %p", __func__,
32958 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32959 WDI_ASSERT(0);
32960 return WDI_STATUS_E_FAILURE;
32961 }
32962
32963 halEXTScanStopReqParams.requestId =
32964 pwdiEXTScanStopReqParams->requestId;
32965 halEXTScanStopReqParams.sessionId =
32966 pwdiEXTScanStopReqParams->sessionId;
32967
32968 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32969 " halEXTScanStopReqParams.requestId %u "
32970 " halEXTScanStopReqParams.sessionId %u ",
32971 halEXTScanStopReqParams.requestId,
32972 halEXTScanStopReqParams.sessionId);
32973
32974 wpalMemoryCopy(pSendBuffer+usDataOffset,
32975 &halEXTScanStopReqParams,
32976 sizeof(halEXTScanStopReqParams));
32977
32978 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32979
32980
32981 /*-------------------------------------------------------------------------
32982 Send EXTScan Stop Request to HAL
32983 -------------------------------------------------------------------------*/
32984 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32985 wdiEXTScanStopCb, pEventData->pUserData,
32986 WDI_EXTSCAN_STOP_RSP);
32987}
32988
32989/**
32990 @brief WDI_EXTScanStartReq
32991
32992 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32993 WDI_EXTScanStartRspCb: callback for passing back the response
32994 of the Req operation received from the device
32995 pUserData: user data will be passed back with the callback
32996
32997 @return SUCCESS or FAIL
32998*/
32999WDI_Status
33000WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33001 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33002 void* pUserData)
33003{
33004 WDI_EventInfoType wdiEventData;
33005
33006 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33007 "%s: %d Enter",__func__, __LINE__);
33008 /*------------------------------------------------------------------------
33009 Sanity Check
33010 ------------------------------------------------------------------------*/
33011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33012 {
33013 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33014 "WDI API call before module is initialized - Fail request");
33015
33016 return WDI_STATUS_E_NOT_ALLOWED;
33017 }
33018
33019 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33020 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33021 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33022 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33023 wdiEventData.pUserData = pUserData;
33024
33025 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33026}
33027
33028/**
33029 @brief WDI_ProcessEXTScanStartReq -
33030 Extended Scan Start Request to FW
33031
33032 @param pWDICtx : wdi context
33033 pEventData : indication data
33034
33035 @see
33036 @return none
33037*/
33038WDI_Status
33039WDI_ProcessEXTScanStartReq
33040(
33041 WDI_ControlBlockType* pWDICtx,
33042 WDI_EventInfoType* pEventData
33043)
33044{
33045 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33046 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33047 wpt_uint8* pSendBuffer = NULL;
33048 wpt_uint16 usSendSize = 0;
33049 wpt_uint16 usDataOffset = 0;
33050 tpHalExtScanStartReq pHalExtScanStartReqParams;
33051 int i = 0;
33052 int j = 0;
33053
33054 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33055 "%s: %d Enter",__func__, __LINE__);
33056
33057 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33058 ( NULL == pEventData->pCBfnc ))
33059 {
33060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33061 "%s: Invalid parameters", __func__);
33062 WDI_ASSERT(0);
33063 return WDI_STATUS_E_FAILURE;
33064 }
33065
33066 pwdiEXTScanStartReqParams =
33067 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33068 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33069
33070 /*-----------------------------------------------------------------------
33071 Get message buffer
33072 ! TO DO : proper conversion into the HAL Message Request Format
33073 -----------------------------------------------------------------------*/
33074 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33075 pWDICtx,
33076 WDI_EXTSCAN_START_REQ,
33077 sizeof(tHalExtScanStartReq),
33078 &pSendBuffer, &usDataOffset,
33079 &usSendSize))||
33080 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33081 {
33082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33083 "Unable to get send buffer in %s %p %p %p", __func__,
33084 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33085 WDI_ASSERT(0);
33086 return WDI_STATUS_E_FAILURE;
33087 }
33088
33089 pHalExtScanStartReqParams =
33090 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33091
33092 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33093 pHalExtScanStartReqParams->maxApPerScan =
33094 pwdiEXTScanStartReqParams->maxAPperScan;
33095 pHalExtScanStartReqParams->reportThreshold =
33096 pwdiEXTScanStartReqParams->reportThreshold;
33097 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33098 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33099 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
33100
33101 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33102 {
33103 pHalExtScanStartReqParams->bucketData[i].bucketId =
33104 pwdiEXTScanStartReqParams->buckets[i].bucket;
33105 pHalExtScanStartReqParams->bucketData[i].channelBand =
33106 pwdiEXTScanStartReqParams->buckets[i].band;
33107 pHalExtScanStartReqParams->bucketData[i].period =
33108 pwdiEXTScanStartReqParams->buckets[i].period;
33109 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33110 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
33111 pHalExtScanStartReqParams->bucketData[i].numChannels =
33112 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33113
33114 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33115 {
33116 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33117 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33118 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33119 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33120 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33121 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33122 }
33123
33124 }
33125
33126
33127 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33128 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
33129 " sessionId %u numBuckets%u ",
33130 pHalExtScanStartReqParams->basePeriod,
33131 pHalExtScanStartReqParams->maxApPerScan,
33132 pHalExtScanStartReqParams->reportThreshold,
33133 pHalExtScanStartReqParams->requestId,
33134 pHalExtScanStartReqParams->sessionId,
33135 pHalExtScanStartReqParams->numBuckets);
33136
33137 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33138 {
33139 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33140 " %d) bucketId %u channelBand %u period %u "
33141 " reportEvents %u numChannels %u ",i,
33142 pHalExtScanStartReqParams->bucketData[i].bucketId,
33143 pHalExtScanStartReqParams->bucketData[i].channelBand,
33144 pHalExtScanStartReqParams->bucketData[i].period,
33145 pHalExtScanStartReqParams->bucketData[i].reportEvents,
33146 pHalExtScanStartReqParams->bucketData[i].numChannels);
33147
33148 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33149 {
33150 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33151 "%d) channel %u dwellTimeMs %u passive %u ",j,
33152 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33153 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33154 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33155 }
33156
33157 }
33158
Dino Mycle41bdc942014-06-10 11:30:24 +053033159 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33160
33161 /*-------------------------------------------------------------------------
33162 Send EXTSCAN Start Request to HAL
33163 -------------------------------------------------------------------------*/
33164 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33165 wdiEXTScanStartCb, pEventData->pUserData,
33166 WDI_EXTSCAN_START_RSP);
33167}
33168
33169/**
33170 @brief WDI_EXTScanSetBSSIDHotlistReq
33171
33172 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33173 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33174 of the Req operation received from the device
33175 pUserData: user data will be passed back with the callback
33176
33177 @return SUCCESS or FAIL
33178*/
33179WDI_Status
33180WDI_EXTScanSetBSSIDHotlistReq(
33181 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33182 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33183 void* pUserData)
33184{
33185 WDI_EventInfoType wdiEventData;
33186
33187 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33188 "%s: %d Enter ",__func__, __LINE__);
33189 /*------------------------------------------------------------------------
33190 Sanity Check
33191 ------------------------------------------------------------------------*/
33192 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33193 {
33194 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33195 "WDI API call before module is initialized - Fail request");
33196
33197 return WDI_STATUS_E_NOT_ALLOWED;
33198 }
33199
33200 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33201 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33202 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33203 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33204 wdiEventData.pUserData = pUserData;
33205
33206 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33207}
33208
33209/**
33210 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33211 Extended Scan Set BSSSID Hotlist Request to FW
33212
33213 @param pWDICtx : wdi context
33214 pEventData : indication data
33215
33216 @see
33217 @return none
33218*/
33219WDI_Status
33220WDI_ProcessEXTScanSetBSSIDHotlistReq
33221(
33222 WDI_ControlBlockType* pWDICtx,
33223 WDI_EventInfoType* pEventData
33224)
33225{
33226 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33227 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33228 wpt_uint8* pSendBuffer = NULL;
33229 wpt_uint16 usSendSize = 0;
33230 wpt_uint16 usDataOffset = 0;
33231 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33232 int i;
33233
33234 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33235 "%s: %d Enter",__func__, __LINE__);
33236
33237 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33238 ( NULL == pEventData->pCBfnc ))
33239 {
33240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33241 "%s: Invalid parameters", __func__);
33242 WDI_ASSERT(0);
33243 return WDI_STATUS_E_FAILURE;
33244 }
33245
33246 pwdiEXTScanSetBSSIDHotlistReqParams =
33247 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33248 wdiEXTScanSetBSSIDHotlistRspCb =
33249 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33250
33251 /*-----------------------------------------------------------------------
33252 Get message buffer
33253 ! TO DO : proper conversion into the HAL Message Request Format
33254 -----------------------------------------------------------------------*/
33255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33256 pWDICtx,
33257 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33258 sizeof(tHalBssidHotlistSetReq),
33259 &pSendBuffer, &usDataOffset,
33260 &usSendSize))||
33261 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33262 {
33263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33264 "Unable to get send buffer in %s %p %p %p", __func__,
33265 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33266 wdiEXTScanSetBSSIDHotlistRspCb);
33267 WDI_ASSERT(0);
33268 return WDI_STATUS_E_FAILURE;
33269 }
33270 pHalBssidHotlistSetReqParams =
33271 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33272
33273 pHalBssidHotlistSetReqParams->requestId =
33274 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33275
33276 pHalBssidHotlistSetReqParams->sessionId =
33277 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33278
33279 pHalBssidHotlistSetReqParams->numAp =
33280 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
33281
33282 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33283
33284 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33285 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33286 WDI_MAC_ADDR_LEN);
33287
33288 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33289 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33290
33291 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33292 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33293
33294 pHalBssidHotlistSetReqParams->ap[i].channel =
33295 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
33296
33297 }
33298
33299 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33300 "ReqID %u sessionId %u numAp %u ",
33301 pHalBssidHotlistSetReqParams->requestId,
33302 pHalBssidHotlistSetReqParams->sessionId,
33303 pHalBssidHotlistSetReqParams->numAp);
33304
33305 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
33306
33307 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33308 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33309 __func__, __LINE__, i,
33310 pHalBssidHotlistSetReqParams->ap[i].bssid,
33311 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
33312 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
33313 pHalBssidHotlistSetReqParams->ap[i].channel);
33314
33315 }
33316
33317 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33318
33319
33320 /*-------------------------------------------------------------------------
33321 Send EXTScan Stop Request to HAL
33322 -------------------------------------------------------------------------*/
33323 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33324 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33325 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33326}
33327
33328/**
33329 @brief WDI_EXTScanResetBSSIDHotlistReq
33330
33331 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33332 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33333 of the Req operation received from the device
33334 pUserData: user data will be passed back with the callback
33335
33336 @return SUCCESS or FAIL
33337*/
33338WDI_Status
33339WDI_EXTScanResetBSSIDHotlistReq(
33340 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33341 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33342 void* pUserData)
33343{
33344 WDI_EventInfoType wdiEventData;
33345
33346 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33347 "%s: %d",__func__, __LINE__);
33348 /*------------------------------------------------------------------------
33349 Sanity Check
33350 ------------------------------------------------------------------------*/
33351 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33352 {
33353 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33354 "WDI API call before module is initialized - Fail request");
33355
33356 return WDI_STATUS_E_NOT_ALLOWED;
33357 }
33358
33359 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33360 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33361 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33362 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33363 wdiEventData.pUserData = pUserData;
33364
33365 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33366}
33367
33368/**
33369 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33370 Extended Scan reset BSSID hotlist Request to FW
33371
33372 @param pWDICtx : wdi context
33373 pEventData : indication data
33374
33375 @see
33376 @return none
33377*/
33378WDI_Status
33379WDI_ProcessEXTScanResetBSSIDHotlistReq
33380(
33381 WDI_ControlBlockType* pWDICtx,
33382 WDI_EventInfoType* pEventData
33383)
33384{
33385 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33386 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33387 wpt_uint8* pSendBuffer = NULL;
33388 wpt_uint16 usSendSize = 0;
33389 wpt_uint16 usDataOffset = 0;
33390 tpHalHotlistResetReq pHalHotlistResetReqParams;
33391
33392 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33393 "%s: %d",__func__, __LINE__);
33394
33395 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33396 ( NULL == pEventData->pCBfnc ))
33397 {
33398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33399 "%s: Invalid parameters", __func__);
33400 WDI_ASSERT(0);
33401 return WDI_STATUS_E_FAILURE;
33402 }
33403
33404 pwdiEXTScanResetBSSIDHotlistReqParams =
33405 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33406 wdiEXTScanResetBSSIDHotlistRspCb =
33407 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33408
33409 /*-----------------------------------------------------------------------
33410 Get message buffer
33411 ! TO DO : proper conversion into the HAL Message Request Format
33412 -----------------------------------------------------------------------*/
33413 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33414 pWDICtx,
33415 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33416 sizeof(tHalHotlistResetReq),
33417 &pSendBuffer, &usDataOffset,
33418 &usSendSize))||
33419 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33420 {
33421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33422 "Unable to get send buffer in %s %p %p %p", __func__,
33423 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33424 wdiEXTScanResetBSSIDHotlistRspCb);
33425 WDI_ASSERT(0);
33426 return WDI_STATUS_E_FAILURE;
33427 }
33428 pHalHotlistResetReqParams =
33429 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33430
33431 pHalHotlistResetReqParams->requestId =
33432 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33433
33434 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33435
33436 /*-------------------------------------------------------------------------
33437 Send EXTScan Stop Request to HAL
33438 -------------------------------------------------------------------------*/
33439 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33440 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33441 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33442}
33443
33444/**
33445 @brief WDI_EXTScanSetSignfRSSIChangeReq
33446
33447 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
33448 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
33449 of the Req operation received from the device
33450 pUserData: user data will be passed back with the callback
33451
33452 @return SUCCESS or FAIL
33453*/
33454WDI_Status
33455WDI_EXTScanSetSignfRSSIChangeReq(
33456 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
33457 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
33458 void* pUserData)
33459{
33460 WDI_EventInfoType wdiEventData;
33461
33462 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33463 "%s: %d ",__func__, __LINE__);
33464 /*------------------------------------------------------------------------
33465 Sanity Check
33466 ------------------------------------------------------------------------*/
33467 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33468 {
33469 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33470 "WDI API call before module is initialized - Fail request");
33471
33472 return WDI_STATUS_E_NOT_ALLOWED;
33473 }
33474
33475 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
33476 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
33477 wdiEventData.uEventDataSize =
33478 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
33479 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
33480 wdiEventData.pUserData = pUserData;
33481
33482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33483}
33484
33485/**
33486 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
33487 Extended Scan set Significant RSSI change Request to FW
33488
33489 @param pWDICtx : wdi context
33490 pEventData : indication data
33491
33492 @see
33493 @return none
33494*/
33495WDI_Status
33496WDI_ProcessEXTScanSetSignifRSSIChangeReq
33497(
33498 WDI_ControlBlockType* pWDICtx,
33499 WDI_EventInfoType* pEventData
33500)
33501{
33502 WDI_EXTScanSetSignfRSSIChangeReqParams*
33503 pwdiEXTScanSetSignfRSSIChangeReqParams;
33504 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33505 wpt_uint8* pSendBuffer = NULL;
33506 wpt_uint16 usSendSize = 0;
33507 wpt_uint16 usDataOffset = 0;
33508 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
33509 int i;
33510
33511 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33512 "%s: %d Enter",__func__, __LINE__);
33513
33514 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33515 ( NULL == pEventData->pCBfnc ))
33516 {
33517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33518 "%s: Invalid parameters", __func__);
33519 WDI_ASSERT(0);
33520 return WDI_STATUS_E_FAILURE;
33521 }
33522
33523 pwdiEXTScanSetSignfRSSIChangeReqParams =
33524 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
33525 wdiEXTScanSetSignfRSSIChangeRspCb =
33526 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33527
33528 /*-----------------------------------------------------------------------
33529 Get message buffer
33530 ! TO DO : proper conversion into the HAL Message Request Format
33531 -----------------------------------------------------------------------*/
33532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33533 pWDICtx,
33534 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
33535 sizeof(tHalSigRssiSetReq),
33536 &pSendBuffer, &usDataOffset,
33537 &usSendSize))||
33538 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
33539 {
33540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33541 "Unable to get send buffer in %s %p %p %p", __func__,
33542 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
33543 wdiEXTScanSetSignfRSSIChangeRspCb);
33544 WDI_ASSERT(0);
33545 return WDI_STATUS_E_FAILURE;
33546 }
33547
33548 pHalSigRssiSetReqParams =
33549 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
33550
33551 pHalSigRssiSetReqParams->requestId =
33552 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33553 pHalSigRssiSetReqParams->sessionId =
33554 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33555 pHalSigRssiSetReqParams->rssiSampleSize =
33556 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33557 pHalSigRssiSetReqParams->lostApSampleSize =
33558 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33559 pHalSigRssiSetReqParams->minBreaching =
33560 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33561 pHalSigRssiSetReqParams->numAp =
33562 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33563
33564
33565 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33566
33567 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33568 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33569 WDI_MAC_ADDR_LEN);
33570
33571 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33572 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33573
33574 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33575 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33576
33577 pHalSigRssiSetReqParams->ap[i].channel =
33578 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33579
33580 }
33581
33582
33583 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33584 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33585 " minBreaching %u numAp %u ",
33586 pHalSigRssiSetReqParams->requestId,
33587 pHalSigRssiSetReqParams->sessionId,
33588 pHalSigRssiSetReqParams->rssiSampleSize,
33589 pHalSigRssiSetReqParams->lostApSampleSize,
33590 pHalSigRssiSetReqParams->minBreaching,
33591 pHalSigRssiSetReqParams->numAp);
33592
33593 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33594
33595 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33596 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33597 i,
33598 pHalSigRssiSetReqParams->ap[i].bssid,
33599 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33600 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33601 pHalSigRssiSetReqParams->ap[i].channel);
33602
33603 }
33604
33605 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33606
33607
33608 /*-------------------------------------------------------------------------
33609 Send EXTScan Stop Request to HAL
33610 -------------------------------------------------------------------------*/
33611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33612 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33613 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33614}
33615
33616/**
33617 @brief WDI_EXTScanResetSignfRSSIChangeReq
33618
33619 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33620 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33621 of the Req operation received from the device
33622 pUserData: user data will be passed back with the callback
33623
33624 @return SUCCESS or FAIL
33625*/
33626WDI_Status
33627WDI_EXTScanResetSignfRSSIChangeReq(
33628 WDI_EXTScanResetSignfRSSIChangeReqParams*
33629 pwdiEXTScanResetSignfRSSIChangeReqParams,
33630 WDI_EXTScanResetSignfRSSIChangeRspCb
33631 wdiEXTScanResetSignfRSSIChangeRspCb,
33632 void* pUserData)
33633{
33634 WDI_EventInfoType wdiEventData;
33635
33636 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33637 "%s: %d ",__func__, __LINE__);
33638 /*------------------------------------------------------------------------
33639 Sanity Check
33640 ------------------------------------------------------------------------*/
33641 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33642 {
33643 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33644 "WDI API call before module is initialized - Fail request");
33645
33646 return WDI_STATUS_E_NOT_ALLOWED;
33647 }
33648
33649 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33650 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33651 wdiEventData.uEventDataSize =
33652 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33653 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33654 wdiEventData.pUserData = pUserData;
33655
33656 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33657}
33658
33659/**
33660 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33661 Extended Scana reset Significant RSSI change Request to FW
33662
33663 @param pWDICtx : wdi context
33664 pEventData : indication data
33665
33666 @see
33667 @return none
33668*/
33669WDI_Status
33670WDI_ProcessEXTScanResetSignfRSSIChangeReq
33671(
33672 WDI_ControlBlockType* pWDICtx,
33673 WDI_EventInfoType* pEventData
33674)
33675{
33676 WDI_EXTScanResetSignfRSSIChangeReqParams*
33677 pwdiEXTScanResetSignfRSSIChangeReqParams;
33678 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33679 wpt_uint8* pSendBuffer = NULL;
33680 wpt_uint16 usSendSize = 0;
33681 wpt_uint16 usDataOffset = 0;
33682 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33683
33684 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33685 "%s: %d ",__func__, __LINE__);
33686
33687 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33688 ( NULL == pEventData->pCBfnc ))
33689 {
33690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33691 "%s: Invalid parameters", __func__);
33692 WDI_ASSERT(0);
33693 return WDI_STATUS_E_FAILURE;
33694 }
33695
33696 pwdiEXTScanResetSignfRSSIChangeReqParams =
33697 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33698 wdiEXTScanResetSignfRSSIChangeRspCb =
33699 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33700
33701 /*-----------------------------------------------------------------------
33702 Get message buffer
33703 ! TO DO : proper conversion into the HAL Message Request Format
33704 -----------------------------------------------------------------------*/
33705 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33706 pWDICtx,
33707 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33708 sizeof(tHalSigRssiResetReq),
33709 &pSendBuffer, &usDataOffset,
33710 &usSendSize))||
33711 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33712 {
33713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33714 "Unable to get send buffer in %s %p %p %p", __func__,
33715 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33716 wdiEXTScanResetSignfRSSIChangeRspCb);
33717 WDI_ASSERT(0);
33718 return WDI_STATUS_E_FAILURE;
33719 }
33720 pHalSigRssiResetReqParams =
33721 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33722
33723 pHalSigRssiResetReqParams->requestId =
33724 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33725
33726 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33727
33728
33729 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33730 wdiEXTScanResetSignfRSSIChangeRspCb,
33731 pEventData->pUserData,
33732 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33733}
33734
33735/**
33736 @brief Process Extended Scan Start Rsp function (called when a response
33737 is being received over the bus from HAL)
33738
33739 @param pWDICtx: pointer to the WLAN DAL context
33740 pEventData: pointer to the event information structure
33741
33742 @see
33743 @return Result of the function call
33744*/
33745WDI_Status
33746WDI_ProcessEXTScanStartRsp
33747(
33748 WDI_ControlBlockType* pWDICtx,
33749 WDI_EventInfoType* pEventData
33750)
33751{
33752 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33753
33754 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33755 "%s: %d",__func__, __LINE__);
33756 /*-------------------------------------------------------------------------
33757 Sanity check
33758 -------------------------------------------------------------------------*/
33759 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33760 ( NULL == pEventData->pEventData))
33761 {
33762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33763 "%s: Invalid parameters", __func__);
33764 WDI_ASSERT(0);
33765 return WDI_STATUS_E_FAILURE;
33766 }
33767
33768 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33769 if ( NULL == wdiEXTScanStartRspCb)
33770 {
33771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33772 "%s: Callback function Invalid", __func__);
33773 WDI_ASSERT(0);
33774 return WDI_STATUS_E_FAILURE;
33775 }
33776
33777 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33778
33779 return WDI_STATUS_SUCCESS;
33780}
33781
33782
33783/**
33784 @brief Process Extended Scan Stop Rsp function (called when a response
33785 is being received over the bus from HAL)
33786
33787 @param pWDICtx: pointer to the WLAN DAL context
33788 pEventData: pointer to the event information structure
33789
33790 @see
33791 @return Result of the function call
33792*/
33793WDI_Status
33794WDI_ProcessEXTScanStopRsp
33795(
33796 WDI_ControlBlockType* pWDICtx,
33797 WDI_EventInfoType* pEventData
33798)
33799{
33800 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33801
33802 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33803 "%s: %d",__func__, __LINE__);
33804
33805
33806 /*-------------------------------------------------------------------------
33807 Sanity check
33808 -------------------------------------------------------------------------*/
33809 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33810 ( NULL == pEventData->pEventData))
33811 {
33812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33813 "%s: Invalid parameters", __func__);
33814 WDI_ASSERT(0);
33815 return WDI_STATUS_E_FAILURE;
33816 }
33817
33818 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33819 if ( NULL == wdiEXTScanStopRspCb)
33820 {
33821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33822 "%s: Callback function Invalid", __func__);
33823 WDI_ASSERT(0);
33824 return WDI_STATUS_E_FAILURE;
33825 }
33826
33827 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33828
33829 return WDI_STATUS_SUCCESS;
33830}
33831
33832/**
33833 @brief Process Extended Scan Get Cached Rsp function (called when a response
33834 is being received over the bus from HAL)
33835
33836 @param pWDICtx: pointer to the WLAN DAL context
33837 pEventData: pointer to the event information structure
33838
33839 @see
33840 @return Result of the function call
33841*/
33842WDI_Status
33843WDI_ProcessEXTScanGetCachedResultsRsp
33844(
33845 WDI_ControlBlockType* pWDICtx,
33846 WDI_EventInfoType* pEventData
33847)
33848{
33849 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33850
33851 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33852 "%s: %d Enter",__func__, __LINE__);
33853
33854
33855 /*-------------------------------------------------------------------------
33856 Sanity check
33857 -------------------------------------------------------------------------*/
33858 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33859 ( NULL == pEventData->pEventData))
33860 {
33861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33862 "%s: Invalid parameters", __func__);
33863 WDI_ASSERT(0);
33864 return WDI_STATUS_E_FAILURE;
33865 }
33866
33867 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33868 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33869 {
33870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33871 "%s: Callback function Invalid", __func__);
33872 WDI_ASSERT(0);
33873 return WDI_STATUS_E_FAILURE;
33874 }
33875
33876 wdiEXTScanGetCachedResultsRspCb(
33877 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33878
33879 return WDI_STATUS_SUCCESS;
33880}
33881
33882/**
33883 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33884 is being received over the bus from HAL)
33885
33886 @param pWDICtx: pointer to the WLAN DAL context
33887 pEventData: pointer to the event information structure
33888
33889 @see
33890 @return Result of the function call
33891*/
33892WDI_Status
33893WDI_ProcessEXTScanGetCapabilitiesRsp
33894(
33895 WDI_ControlBlockType* pWDICtx,
33896 WDI_EventInfoType* pEventData
33897)
33898{
33899 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33900
33901 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33902 "%s: %d ",__func__, __LINE__);
33903
33904
33905 /*-------------------------------------------------------------------------
33906 Sanity check
33907 -------------------------------------------------------------------------*/
33908 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33909 ( NULL == pEventData->pEventData))
33910 {
33911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33912 "%s: Invalid parameters", __func__);
33913 WDI_ASSERT(0);
33914 return WDI_STATUS_E_FAILURE;
33915 }
33916
33917 wdiEXTScanGetCapabilitiesRspCb =
33918 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33919 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33920 {
33921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33922 "%s: Callback function Invalid", __func__);
33923 WDI_ASSERT(0);
33924 return WDI_STATUS_E_FAILURE;
33925 }
33926
33927 wdiEXTScanGetCapabilitiesRspCb(
33928 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33929
33930 return WDI_STATUS_SUCCESS;
33931}
33932
33933/**
33934 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33935 response is being received over the bus from HAL)
33936
33937 @param pWDICtx: pointer to the WLAN DAL context
33938 pEventData: pointer to the event information structure
33939
33940 @see
33941 @return Result of the function call
33942*/
33943WDI_Status
33944WDI_ProcessEXTScanSetHotlistBSSIDRsp
33945(
33946 WDI_ControlBlockType* pWDICtx,
33947 WDI_EventInfoType* pEventData
33948)
33949{
33950 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33951
33952 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33953 "%s: %d ",__func__, __LINE__);
33954
33955
33956 /*-------------------------------------------------------------------------
33957 Sanity check
33958 -------------------------------------------------------------------------*/
33959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33960 ( NULL == pEventData->pEventData))
33961 {
33962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33963 "%s: Invalid parameters", __func__);
33964 WDI_ASSERT(0);
33965 return WDI_STATUS_E_FAILURE;
33966 }
33967
33968 wdiEXTScanSetBSSIDHotlistRspCb =
33969 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33970 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33971 {
33972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33973 "%s: Callback function Invalid", __func__);
33974 WDI_ASSERT(0);
33975 return WDI_STATUS_E_FAILURE;
33976 }
33977
33978 wdiEXTScanSetBSSIDHotlistRspCb(
33979 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33980
33981 return WDI_STATUS_SUCCESS;
33982}
33983
33984/**
33985 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33986 when a response is being received over the bus from HAL)
33987
33988 @param pWDICtx: pointer to the WLAN DAL context
33989 pEventData: pointer to the event information structure
33990
33991 @see
33992 @return Result of the function call
33993*/
33994WDI_Status
33995WDI_ProcessEXTScanResetHotlistBSSIDRsp
33996(
33997 WDI_ControlBlockType* pWDICtx,
33998 WDI_EventInfoType* pEventData
33999)
34000{
34001 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34002
34003 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34004 "%s: %d ",__func__, __LINE__);
34005
34006
34007 /*-------------------------------------------------------------------------
34008 Sanity check
34009 -------------------------------------------------------------------------*/
34010 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34011 ( NULL == pEventData->pEventData))
34012 {
34013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34014 "%s: Invalid parameters", __func__);
34015 WDI_ASSERT(0);
34016 return WDI_STATUS_E_FAILURE;
34017 }
34018
34019 wdiEXTScanResetBSSIDHotlistRspCb =
34020 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34021 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34022 {
34023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34024 "%s: Callback function Invalid", __func__);
34025 WDI_ASSERT(0);
34026 return WDI_STATUS_E_FAILURE;
34027 }
34028
34029 wdiEXTScanResetBSSIDHotlistRspCb(
34030 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34031
34032 return WDI_STATUS_SUCCESS;
34033}
34034
34035/**
34036 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
34037 when a response is being received over the bus from HAL)
34038
34039 @param pWDICtx: pointer to the WLAN DAL context
34040 pEventData: pointer to the event information structure
34041
34042 @see
34043 @return Result of the function call
34044*/
34045WDI_Status
34046WDI_ProcessEXTScanSetSignfRSSIChangeRsp
34047(
34048 WDI_ControlBlockType* pWDICtx,
34049 WDI_EventInfoType* pEventData
34050)
34051{
34052 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
34053
34054 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34055 "%s: %d",__func__, __LINE__);
34056
34057
34058 /*-------------------------------------------------------------------------
34059 Sanity check
34060 -------------------------------------------------------------------------*/
34061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34062 ( NULL == pEventData->pEventData))
34063 {
34064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34065 "%s: Invalid parameters", __func__);
34066 WDI_ASSERT(0);
34067 return WDI_STATUS_E_FAILURE;
34068 }
34069
34070 wdiEXTScanSetSignfRSSIChangeRspCb =
34071 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34072 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
34073 {
34074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34075 "%s: Callback function Invalid", __func__);
34076 WDI_ASSERT(0);
34077 return WDI_STATUS_E_FAILURE;
34078 }
34079
34080 wdiEXTScanSetSignfRSSIChangeRspCb(
34081 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34082
34083 return WDI_STATUS_SUCCESS;
34084}
34085
34086/**
34087 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
34088 (called when a response is being received over the bus from HAL)
34089
34090 @param pWDICtx: pointer to the WLAN DAL context
34091 pEventData: pointer to the event information structure
34092
34093 @see
34094 @return Result of the function call
34095*/
34096WDI_Status
34097WDI_ProcessEXTScanResetSignfRSSIChangeRsp
34098(
34099 WDI_ControlBlockType* pWDICtx,
34100 WDI_EventInfoType* pEventData
34101)
34102{
34103 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
34104
34105 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34106 "%s: %d Enter",__func__, __LINE__);
34107
34108
34109 /*-------------------------------------------------------------------------
34110 Sanity check
34111 -------------------------------------------------------------------------*/
34112 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34113 ( NULL == pEventData->pEventData))
34114 {
34115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34116 "%s: Invalid parameters", __func__);
34117 WDI_ASSERT(0);
34118 return WDI_STATUS_E_FAILURE;
34119 }
34120
34121 wdiEXTScanResetSignfRSSIChangeRspCb =
34122 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34123 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
34124 {
34125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34126 "%s: Callback function Invalid", __func__);
34127 WDI_ASSERT(0);
34128 return WDI_STATUS_E_FAILURE;
34129 }
34130
34131 wdiEXTScanResetSignfRSSIChangeRspCb(
34132 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34133
34134 return WDI_STATUS_SUCCESS;
34135}
34136#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034137
34138/**
34139 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34140
34141 @param None
34142
34143 @see
34144
34145 @return Status of the request
34146*/
34147WDI_Status
34148WDI_SetSpoofMacAddrReq
34149(
34150 WDI_SpoofMacAddrInfoType* pWdiReq,
34151 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34152 void* pUserData)
34153{
34154 WDI_EventInfoType wdiEventData;
34155
34156 /*-------------------------------------------------------------------------
34157 Sanity Check
34158 ------------------------------------------------------------------------*/
34159 if (eWLAN_PAL_FALSE == gWDIInitialized)
34160 {
34161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34162 "WDI API call before module is initialized - Fail request!");
34163
34164 return WDI_STATUS_E_NOT_ALLOWED;
34165 }
34166
34167 /*-------------------------------------------------------------------------
34168 Fill in Event data and post to the Main FSM
34169 ------------------------------------------------------------------------*/
34170 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34171 wdiEventData.pEventData = pWdiReq;
34172 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34173 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34174 wdiEventData.pUserData = pUserData;
34175
34176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34177}
34178
34179/**
34180 @brief Process SpoofMacAddr Request
34181
34182 @param pWDICtx: pointer to the WLAN DAL context
34183 pEventData: pointer to the event information structure
34184
34185 @see
34186 @return Result of the function call
34187*/
34188WDI_Status
34189WDI_ProcessSpoofMacAddrReq
34190(
34191 WDI_ControlBlockType* pWDICtx,
34192 WDI_EventInfoType* pEventData
34193)
34194{
34195 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34196 wpt_uint8* pSendBuffer = NULL;
34197 wpt_uint16 usDataOffset = 0;
34198 wpt_uint16 usSendSize = 0;
34199 WDI_Status wdiStatus;
34200 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34201 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34202
34203
34204 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34205 "%s: %d Enter",__func__, __LINE__);
34206
34207 /*-------------------------------------------------------------------------
34208 Sanity check
34209 -------------------------------------------------------------------------*/
34210 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34211 ( NULL == pEventData->pEventData))
34212 {
34213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34214 "%s: Invalid parameters", __func__);
34215 WDI_ASSERT(0);
34216 return WDI_STATUS_E_FAILURE;
34217 }
34218 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34219
34220 /*-----------------------------------------------------------------------
34221 Get message buffer
34222 -----------------------------------------------------------------------*/
34223 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34224 WDI_SPOOF_MAC_ADDR_REQ,
34225 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34226 &pSendBuffer, &usDataOffset, &usSendSize))||
34227 (usSendSize < (usDataOffset +
34228 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34229 {
34230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34231 "Unable to get send buffer in Process Spoof Mac Addr Req");
34232 WDI_ASSERT(0);
34233 return WDI_STATUS_E_FAILURE;
34234 }
34235
34236 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34237 wdiSpoofMacAddr->macAddr,
34238 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34239
34240 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34241
34242 wpalMemoryCopy( pSendBuffer+usDataOffset,
34243 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34244 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34245
34246 /*-------------------------------------------------------------------------
34247 Send Suspend Request to HAL
34248 -------------------------------------------------------------------------*/
34249 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34250 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34251
34252 return wdiStatus;
34253}
34254
34255/**
34256 @brief Process Spoof Mac Address Rsp function
34257 (called when a response is being received over the bus from HAL)
34258
34259 @param pWDICtx: pointer to the WLAN DAL context
34260 pEventData: pointer to the event information structure
34261
34262 @see
34263 @return Result of the function call
34264*/
34265WDI_Status
34266WDI_ProcessSpoofMacAddrRsp
34267(
34268 WDI_ControlBlockType* pWDICtx,
34269 WDI_EventInfoType* pEventData
34270)
34271{
34272 tMacSpoofedScanResp halRsp;
34273 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34274 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34275
34276 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34277 "%s: %d Enter",__func__, __LINE__);
34278
34279 /*-------------------------------------------------------------------------
34280 Sanity check
34281 -------------------------------------------------------------------------*/
34282 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34283 ( NULL == pEventData->pEventData))
34284 {
34285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34286 "%s: Invalid parameters", __func__);
34287 WDI_ASSERT(0);
34288 return WDI_STATUS_E_FAILURE;
34289 }
34290 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34291
34292 /*-------------------------------------------------------------------------
34293 Extract response and send it to UMAC
34294 -------------------------------------------------------------------------*/
34295 wpalMemoryCopy( &halRsp,
34296 pEventData->pEventData, sizeof(halRsp));
34297
34298 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34299
34300 /*Notify UMAC*/
34301 wdiSpoofMacAddrRspCb(
34302 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34303
34304 return WDI_STATUS_SUCCESS;
34305}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034306
34307/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034308 @brief Process Get Frame Log Rsp function
34309 (called when a response is being received over the bus from HAL)
34310
34311 @param pWDICtx: pointer to the WLAN DAL context
34312 pEventData: pointer to the event information structure
34313
34314 @see
34315 @return Result of the function call
34316*/
34317WDI_Status
34318WDI_ProcessGetFrameLogRsp
34319(
34320 WDI_ControlBlockType* pWDICtx,
34321 WDI_EventInfoType* pEventData
34322)
34323{
34324 tGetFrameLogResp halRsp;
34325 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34326 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34327
34328 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34329 "%s: %d Enter",__func__, __LINE__);
34330
34331 /*-------------------------------------------------------------------------
34332 Sanity check
34333 -------------------------------------------------------------------------*/
34334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34335 ( NULL == pEventData->pEventData))
34336 {
34337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34338 "%s: Invalid parameters", __func__);
34339 WDI_ASSERT(0);
34340 return WDI_STATUS_E_FAILURE;
34341 }
34342
34343 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34344
34345 /*-------------------------------------------------------------------------
34346 Extract response and send it to UMAC
34347 -------------------------------------------------------------------------*/
34348 wpalMemoryCopy( &halRsp,
34349 pEventData->pEventData, sizeof(halRsp));
34350
34351 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34352
34353 /*Notify UMAC*/
34354 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34355
34356 return WDI_STATUS_SUCCESS;
34357}
34358/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034359 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053034360
34361 @param pWDICtx: pointer to the WLAN DAL context
34362 pEventData: pointer to the event information structure
34363
34364 @see
34365 @return Result of the function call
34366*/
34367WDI_Status
34368WDI_ProcessGetFrameLogReq
34369(
34370 WDI_ControlBlockType* pWDICtx,
34371 WDI_EventInfoType* pEventData
34372)
34373{
34374 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
34375 wpt_uint8* pSendBuffer = NULL;
34376 wpt_uint16 usDataOffset = 0;
34377 wpt_uint16 usSendSize = 0;
34378 WDI_Status wdiStatus;
34379 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034380 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053034381
34382
34383 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34384 "%s: %d Enter",__func__, __LINE__);
34385
34386 /*-------------------------------------------------------------------------
34387 Sanity check
34388 ------------------------------------------------------------------------*/
34389 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34390 ( NULL == pEventData->pEventData))
34391 {
34392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34393 "%s: Invalid parameters", __func__);
34394 WDI_ASSERT(0);
34395 return WDI_STATUS_E_FAILURE;
34396 }
34397
34398 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
34399
34400 /*-----------------------------------------------------------------------
34401 Get message buffer
34402 -----------------------------------------------------------------------*/
34403 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34404 WDI_GET_FRAME_LOG_REQ,
34405 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
34406 &pSendBuffer, &usDataOffset, &usSendSize))||
34407 (usSendSize < (usDataOffset +
34408 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
34409 {
34410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34411 "Unable to get send buffer in GetFrameLog Req");
34412 WDI_ASSERT(0);
34413 return WDI_STATUS_E_FAILURE;
34414 }
34415
34416 halGetFrameLogReq.tGetFrameLogReqParams.flags =
34417 wdiGetFrameLogReq->flags;
34418
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034419 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053034420
34421 wpalMemoryCopy( pSendBuffer+usDataOffset,
34422 &halGetFrameLogReq.tGetFrameLogReqParams,
34423 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34424
34425 /*-------------------------------------------------------------------------
34426 Send Suspend Request to HAL
34427 ------------------------------------------------------------------------*/
34428 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34429 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34430
34431 return wdiStatus;
34432}
34433/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034434 @brief Process MgmtFrame Logging Init Rsp function
34435 (called when a response is being received over the bus from HAL)
34436
34437 @param pWDICtx: pointer to the WLAN DAL context
34438 pEventData: pointer to the event information structure
34439
34440 @see
34441 @return Result of the function call
34442*/
34443WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034444WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034445(
34446 WDI_ControlBlockType* pWDICtx,
34447 WDI_EventInfoType* pEventData
34448)
34449{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034450 tFWLoggingInitResp halRsp;
34451 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
34452 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034453
34454 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34455 "%s: %d Enter",__func__, __LINE__);
34456
34457 /*-------------------------------------------------------------------------
34458 Sanity check
34459 -------------------------------------------------------------------------*/
34460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34461 ( NULL == pEventData->pEventData))
34462 {
34463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34464 "%s: Invalid parameters", __func__);
34465 WDI_ASSERT(0);
34466 return WDI_STATUS_E_FAILURE;
34467 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034468 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034469
34470 /*-------------------------------------------------------------------------
34471 Extract response and send it to UMAC
34472 -------------------------------------------------------------------------*/
34473 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34474
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034475 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034476
34477 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034478 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034479
34480 return WDI_STATUS_SUCCESS;
34481}
34482
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034483WDI_Status
34484WDI_ProcessFWLoggingDXEdoneInd
34485(
34486 WDI_ControlBlockType* pWDICtx,
34487 WDI_EventInfoType* pEventData
34488)
34489{
34490 wpt_uint8* pSendBuffer = NULL;
34491 wpt_uint16 usDataOffset = 0;
34492 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034493 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053034494 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034495 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34496
34497
34498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34499
34500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34501 "%s", __func__);
34502
34503 /*-------------------------------------------------------------------------
34504 Sanity check
34505 -------------------------------------------------------------------------*/
Mihir Shete5affadc2015-05-29 20:54:57 +053034506 if (NULL == pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034507 {
34508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34509 "%s: Invalid parameters", __func__);
34510 WDI_ASSERT(0);
34511 return WDI_STATUS_E_FAILURE;
34512 }
Mihir Shete5affadc2015-05-29 20:54:57 +053034513 pLoggingSession = (WDI_DS_LoggingSessionType *)
34514 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
34515 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034516 /*-----------------------------------------------------------------------
34517 Get message buffer
34518 -----------------------------------------------------------------------*/
34519
34520 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34521 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053034522 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034523 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053034524 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034525 {
34526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34527 "Unable to get send buffer in RTS CTS ind %p ",
34528 pEventData);
34529 WDI_ASSERT(0);
34530 return WDI_STATUS_E_FAILURE;
34531 }
34532 FWLoggingDxeDoneIndParams =
34533 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
34534
34535 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053034536 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034537 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053034538
34539 FWLoggingDxeDoneIndParams->status = eHAL_STATUS_SUCCESS;
34540
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034541 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053034542 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034543 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
34544
34545 pWDICtx->pReqStatusUserData = NULL;
34546 pWDICtx->pfncRspCB = NULL;
34547 /*-------------------------------------------------------------------------
34548 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
34549 -------------------------------------------------------------------------*/
34550 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34551 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34552}
34553
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034554/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034555 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034556
34557 @param pWDICtx: pointer to the WLAN DAL context
34558 pEventData: pointer to the event information structure
34559
34560 @see
34561 @return Result of the function call
34562*/
34563WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034564WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034565(
34566 WDI_ControlBlockType* pWDICtx,
34567 WDI_EventInfoType* pEventData
34568)
34569{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034570 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034571 wpt_uint8* pSendBuffer = NULL;
34572 wpt_uint16 usDataOffset = 0;
34573 wpt_uint16 usSendSize = 0;
34574 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034575 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
34576 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034577
34578
34579 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34580 "%s: %d Enter",__func__, __LINE__);
34581
34582 /*-------------------------------------------------------------------------
34583 Sanity check
34584 ------------------------------------------------------------------------*/
34585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34586 ( NULL == pEventData->pEventData))
34587 {
34588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34589 "%s: Invalid parameters", __func__);
34590 WDI_ASSERT(0);
34591 return WDI_STATUS_E_FAILURE;
34592 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034593 wdiFWLoggingInitReq =
34594 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034595
34596 /*-----------------------------------------------------------------------
34597 Get message buffer
34598 -----------------------------------------------------------------------*/
34599 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034600 WDI_FW_LOGGING_INIT_REQ,
34601 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034602 &pSendBuffer, &usDataOffset, &usSendSize))||
34603 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034604 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034605 {
34606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34607 "Unable to get send buffer in Process Mgmt Logging Init Req");
34608 WDI_ASSERT(0);
34609 return WDI_STATUS_E_FAILURE;
34610 }
34611
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034612 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
34613 wdiFWLoggingInitReq->enableFlag;
34614 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
34615 wdiFWLoggingInitReq->frameSize;
34616 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
34617 wdiFWLoggingInitReq->frameType;
34618 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
34619 wdiFWLoggingInitReq->bufferMode;
34620 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
34621 wdiFWLoggingInitReq->continuousFrameLogging;
34622 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
34623 wdiFWLoggingInitReq->minLogBufferSize;
34624 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
34625 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053034626 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
34627 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
34628 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
34629 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034630
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034631 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034632
34633 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034634 &halFWLoggingInitReq.tFWLoggingInitReqParams,
34635 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034636
34637 /*-------------------------------------------------------------------------
34638 Send Mgmt Logging Init Request to HAL
34639 ------------------------------------------------------------------------*/
34640 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034641 wdiFWLoggingInitRspCb, pEventData->pUserData,
34642 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034643
34644 return wdiStatus;
34645}
34646
34647/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034648 @brief WDI_EncryptMsgReq
34649
34650 @param pwdiEncryptMsgParams: Req parameter for the FW
34651 wdiEncryptMsgCbRsp: callback for passing back the response
34652 of the Req operation received from the device
34653 pUserData: user data will be passed back with the callback
34654
34655 @return SUCCESS or FAIL
34656*/
34657WDI_Status
34658WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34659 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34660 void* pUserData)
34661{
34662 WDI_EventInfoType wdiEventData;
34663
34664 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34665 "%s: %d Enter" ,__func__, __LINE__);
34666 /*------------------------------------------------------------------------
34667 Sanity Check
34668 ------------------------------------------------------------------------*/
34669 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34670 {
34671 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34672 "WDI API call before module is initialized - Fail request");
34673
34674 return WDI_STATUS_E_NOT_ALLOWED;
34675 }
34676
34677 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34678 wdiEventData.pEventData = pwdiEncryptMsgParams;
34679 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34680 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34681 wdiEventData.pUserData = pUserData;
34682
34683 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34684}
34685
34686/*
34687 * FUNCTION: WDI_ProcessEncryptMsgReq
34688 * Request to WDI to encrypt the given message.
34689 *
34690 * @param pWDICtx: pointer to the WLAN DAL context
34691 * pEventData: pointer to the event information structure
34692 *
34693 * @return Result of the function call
34694 */
34695
34696WDI_Status
34697WDI_ProcessEncryptMsgReq
34698(
34699 WDI_ControlBlockType* pWDICtx,
34700 WDI_EventInfoType* pEventData
34701)
34702{
34703 wpt_uint8* pSendBuffer = NULL;
34704 wpt_uint16 usDataOffset = 0;
34705 wpt_uint16 usSendSize = 0;
34706 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34707 tSetEncryptedDataParams *pHalEncryptDataReq;
34708 wpt_pkt80211 *pkt = NULL;
34709
34710 /*-------------------------------------------------------------------------
34711 Sanity check
34712 -------------------------------------------------------------------------*/
34713 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34714 ( NULL == pEventData->pCBfnc ) )
34715 {
34716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34717 "%s: Invalid parameters", __func__);
34718 WDI_ASSERT(0);
34719 return WDI_STATUS_E_FAILURE;
34720 }
34721
34722 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34723
34724 /*-----------------------------------------------------------------------
34725 Get message buffer
34726 -----------------------------------------------------------------------*/
34727 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34728 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34729 sizeof(tSetEncryptedDataReqMsg),
34730 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34731 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34732 {
34733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34734 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34735 pEventData);
34736 WDI_ASSERT(0);
34737 return WDI_STATUS_E_FAILURE;
34738 }
34739
34740 pWDICtx->wdiReqStatusCB = NULL;
34741 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34742 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34743
34744 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34745 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34746
34747 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34748
34749 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34750 pkt->encParams.keyParams.key[0].keyId;
34751
34752 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34753 &pkt->encParams.keyParams.key[0].key[0], 16);
34754
34755 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34756
34757 pHalEncryptDataReq->data.length = pkt->data.length;
34758 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34759
34760 /*-------------------------------------------------------------------------
34761 Send Get STA Request to HAL
34762 -------------------------------------------------------------------------*/
34763 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34764 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34765}
34766
34767/*
34768 * FUNCTION: WDI_ProcessEncryptMsgRsp
34769 * Receives the encrypted message from the firmware
34770 * @param pWDICtx: pointer to the WLAN DAL context
34771 * pEventData: pointer to the event information structure
34772 *
34773 * @return Result of the function call
34774 */
34775WDI_Status
34776WDI_ProcessEncryptMsgRsp
34777(
34778 WDI_ControlBlockType* pWDICtx,
34779 WDI_EventInfoType* pEventData
34780)
34781{
34782 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
34783 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
34784
34785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34786 "In %s",__func__);
34787
34788 /*-------------------------------------------------------------------------
34789 Sanity check
34790 -------------------------------------------------------------------------*/
34791 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34792 ( NULL == pEventData->pEventData))
34793 {
34794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34795 "%s: Invalid parameters", __func__);
34796 WDI_ASSERT(0);
34797 return WDI_STATUS_E_FAILURE;
34798 }
34799
34800 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
34801
34802 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
34803
34804 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
34805 pEventData->pEventData,
34806 pWDICtx->pRspCBUserData);
34807 return WDI_STATUS_SUCCESS;
34808}
Srinivas Dasari32a79262015-02-19 13:04:49 +053034809
34810WDI_Status
34811WDI_NanRequest
34812(
34813 WDI_NanRequestType *pwdiNanRequest,
34814 void *usrData
34815)
34816{
34817 WDI_EventInfoType wdiEventData;
34818
34819 /*------------------------------------------------------------------------
34820 Sanity Check
34821 ------------------------------------------------------------------------*/
34822 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34823 {
34824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34825 "WDI API call before module is initialized - Fail request");
34826
34827 return WDI_STATUS_E_NOT_ALLOWED;
34828 }
34829
34830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34831 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
34832 pwdiNanRequest->request_data_len);
34833
34834 /*------------------------------------------------------------------------
34835 Fill in Event data and post to the Main FSM
34836 ------------------------------------------------------------------------*/
34837 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
34838 wdiEventData.pEventData = pwdiNanRequest;
34839 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
34840 + pwdiNanRequest->request_data_len;
34841 wdiEventData.pUserData = usrData;
34842 wdiEventData.pCBfnc = NULL;
34843
34844
34845 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34846}
34847
34848WDI_Status
34849WDI_ProcessNanRequest
34850(
34851 WDI_ControlBlockType* pWDICtx,
34852 WDI_EventInfoType* pEventData
34853)
34854{
34855 WDI_NanRequestType *pwdiNanRequest = NULL;
34856 wpt_uint8* pSendBuffer = NULL;
34857 wpt_uint16 usDataOffset = 0;
34858 wpt_uint16 usSendSize = 0;
34859
34860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34861 "WDI_ProcessNanRequest");
34862
34863 /*-------------------------------------------------------------------------
34864 Sanity check
34865 -------------------------------------------------------------------------*/
34866 if (( NULL == pEventData ) ||
34867 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
34868 {
34869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34870 "%s: Invalid parameters", __FUNCTION__);
34871 WDI_ASSERT(0);
34872 return WDI_STATUS_E_FAILURE;
34873 }
34874
34875 /*-----------------------------------------------------------------------
34876 Get message buffer
34877 -----------------------------------------------------------------------*/
34878 if (( WDI_STATUS_SUCCESS
34879 != WDI_GetMessageBuffer( pWDICtx,
34880 WDI_NAN_REQUEST,
34881 pwdiNanRequest->request_data_len,
34882 &pSendBuffer,
34883 &usDataOffset,
34884 &usSendSize))||
34885 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
34886 {
34887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34888 "Unable to get send buffer in NAN request %p %p",
34889 pEventData, pwdiNanRequest);
34890 WDI_ASSERT(0);
34891 return WDI_STATUS_E_FAILURE;
34892 }
34893
34894 wpalMemoryCopy( pSendBuffer+usDataOffset,
34895 pwdiNanRequest->request_data,
34896 pwdiNanRequest->request_data_len);
34897
34898 pWDICtx->pReqStatusUserData = NULL;
34899 pWDICtx->pfncRspCB = NULL;
34900 vos_mem_free( pEventData->pUserData);
34901
34902 /*-------------------------------------------------------------------------
34903 Send NAN Request to HAL
34904 -------------------------------------------------------------------------*/
34905 return WDI_SendMsg( pWDICtx,
34906 pSendBuffer,
34907 usSendSize,
34908 NULL,
34909 NULL,
34910 WDI_NAN_RESPONSE);
34911}
34912
34913/**
34914 @brief Process NAN Response function (called when a
34915 response is being received over the bus from HAL)
34916
34917 @param pWDICtx: pointer to the WLAN DAL context
34918 pEventData: pointer to the event information structure
34919
34920 @see
34921 @return Result of the function call
34922*/
34923WDI_Status
34924WDI_ProcessNanResponse
34925(
34926 WDI_ControlBlockType* pWDICtx,
34927 WDI_EventInfoType* pEventData
34928)
34929{
34930 WDI_Status wdiStatus;
34931 eHalStatus halStatus;
34932
34933 /*-------------------------------------------------------------------------
34934 Sanity check
34935 -------------------------------------------------------------------------*/
34936 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34937 ( NULL == pEventData->pEventData))
34938 {
34939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34940 "%s: Invalid parameters", __func__);
34941 WDI_ASSERT(0);
34942 return WDI_STATUS_E_FAILURE;
34943 }
34944
34945 halStatus = *((eHalStatus*)pEventData->pEventData);
34946 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
34947
34948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34949 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
34950
34951 return WDI_STATUS_SUCCESS;
34952}/*WDI_ProcessNanResponse*/
34953
34954
34955/**
34956 @brief Process NAN Event function (called when
34957 an indication is being received over the
34958 bus from HAL)
34959
34960 @param pWDICtx: pointer to the WLAN DAL context
34961 pEventData: pointer to the event information structure
34962
34963 @see
34964 @return Result of the function call
34965*/
34966WDI_Status
34967WDI_ProcessNanEvent
34968(
34969 WDI_ControlBlockType* pWDICtx,
34970 WDI_EventInfoType* pEventData
34971)
34972{
34973 WDI_LowLevelIndType wdiInd;
34974
34975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34976
34977 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34978 ( NULL == pEventData->pEventData ))
34979 {
34980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34981 "%s: Invalid parameters", __func__);
34982 WDI_ASSERT( 0 );
34983 return WDI_STATUS_E_FAILURE;
34984 }
34985
34986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34987 "%s: Received NAN event", __func__);
34988 /*-------------------------------------------------------------------------
34989 Extract indication and send it to UMAC
34990 -------------------------------------------------------------------------*/
34991 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
34992 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
34993 pEventData->uEventDataSize;
34994 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
34995 pEventData->pEventData;
34996
34997 /*Notify UMAC*/
34998 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34999
35000 return WDI_STATUS_SUCCESS;
35001}/*WDI_ProcessNanEvent*/
35002
Abhishek Singh41988ba2015-05-25 19:42:29 +053035003WDI_Status
35004WDI_ProcessSetRtsCtsHtvhtInd
35005(
35006 WDI_ControlBlockType* pWDICtx,
35007 WDI_EventInfoType* pEventData
35008)
35009{
35010 wpt_uint8* pSendBuffer = NULL;
35011 wpt_uint16 usDataOffset = 0;
35012 wpt_uint16 usSendSize = 0;
35013 wpt_uint32 *rtsCtsVal;
35014 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
35015 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35016
35017
35018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35019
35020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35021 "%s", __func__);
35022
35023 /*-------------------------------------------------------------------------
35024 Sanity check
35025 -------------------------------------------------------------------------*/
35026 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35027 {
35028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35029 "%s: Invalid parameters", __func__);
35030 WDI_ASSERT(0);
35031 return WDI_STATUS_E_FAILURE;
35032 }
35033 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
35034 /*-----------------------------------------------------------------------
35035 Get message buffer
35036 -----------------------------------------------------------------------*/
35037
35038 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35039 WDI_SET_RTS_CTS_HTVHT_IND,
35040 sizeof(tHalRtsCtsHtvhtIndParams),
35041 &pSendBuffer, &usDataOffset, &usSendSize))||
35042 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
35043 {
35044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35045 "Unable to get send buffer in RTS CTS ind %p ",
35046 pEventData);
35047 WDI_ASSERT(0);
35048 return WDI_STATUS_E_FAILURE;
35049 }
35050 rtsCtsHtvhtIndParams =
35051 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
35052 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
35053
35054 pWDICtx->pReqStatusUserData = NULL;
35055 pWDICtx->pfncRspCB = NULL;
35056 /*-------------------------------------------------------------------------
35057 Send SET_RTS_CTS_HTVHT Indication to HAL
35058 -------------------------------------------------------------------------*/
35059 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35060 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35061}
35062
35063WDI_Status
35064WDI_SetRtsCtsHTVhtInd
35065(
35066 wpt_uint32 rtsCtsVal
35067)
35068{
35069 WDI_EventInfoType wdiEventData;
35070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35071
35072 /*------------------------------------------------------------------------
35073 Sanity Check
35074 ------------------------------------------------------------------------*/
35075 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35076 {
35077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35078 "WDI API call before module is initialized - Fail request");
35079 return WDI_STATUS_E_NOT_ALLOWED;
35080 }
35081
35082 /*------------------------------------------------------------------------
35083 Fill in Event data and post to the Main FSM
35084 ------------------------------------------------------------------------*/
35085 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
35086 wdiEventData.pEventData = (void *) &rtsCtsVal;
35087 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
35088 wdiEventData.pCBfnc = NULL;
35089 wdiEventData.pUserData = NULL;
35090
35091 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35092
35093}/* WDI_SetRtsCtsHTVhtInd */