blob: 0f3839f9739db4e1c2447925a846990c44c38046 [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
Jeff Johnson295189b2012-06-20 16:38:30 -0700105
106#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
203
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530204};
Jeff Johnson295189b2012-06-20 16:38:30 -0700205
206/*--------------------------------------------------------------------------
207 WLAN DAL State Machine
208 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700209WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700210{
211 /*WDI_INIT_ST*/
212 {{
213 WDI_MainStart, /*WDI_START_EVENT*/
214 NULL, /*WDI_STOP_EVENT*/
215 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
216 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
217 WDI_MainClose, /*WDI_CLOSE_EVENT*/
218 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
219 }},
220
221 /*WDI_STARTED_ST*/
222 {{
223 WDI_MainStartStarted, /*WDI_START_EVENT*/
224 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
225 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
226 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
227 NULL, /*WDI_CLOSE_EVENT*/
228 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
229 }},
230
231 /*WDI_STOPPED_ST*/
232 {{
233 WDI_MainStart, /*WDI_START_EVENT*/
234 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
235 NULL, /*WDI_REQUEST_EVENT*/
236 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
237 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700238 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700239 }},
240
241 /*WDI_BUSY_ST*/
242 {{
243 WDI_MainStartBusy, /*WDI_START_EVENT*/
244 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
245 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
246 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
247 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
248 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
249 }}
250};
251
Jeff Johnsone7245742012-09-05 17:12:55 -0700252/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700253 DAL Request Processing Array - the functions in this table will only be
254 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700255 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700256 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700257WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700258{
259 /*INIT*/
260 WDI_ProcessStartReq, /* WDI_START_REQ */
261 WDI_ProcessStopReq, /* WDI_STOP_REQ */
262 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
263
264 /*SCAN*/
265 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
266 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
267 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
268 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
269
270 /*ASSOCIATION*/
271 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
272 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
273 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
274 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
275 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
276
277 /* Security */
278 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
279 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
280 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
281 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
282
283 /* QoS and BA APIs */
284 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
285 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
286 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
287 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
288 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
289
290 /* Miscellaneous Control APIs */
291 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
292 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
293 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
294 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
295 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
296
297 /*BA APIs*/
298 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
299 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
300
301 /*Beacon processing APIs*/
302 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
303 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
304
305 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
306 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
307 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
308 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700309 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700310 /* PowerSave APIs */
311 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
312 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
313 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
314 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
315 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
316 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
317 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
318 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
319 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
320 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
321 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
322 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
323 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
324 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
325 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
326 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
327 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
328 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
329 /*NV Download APIs*/
330 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
331 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
332 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
333#ifdef WLAN_FEATURE_VOWIFI_11R
334 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
335#else
336 NULL,
337#endif /* WLAN_FEATURE_VOWIFI_11R */
338 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
339 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700340 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700341
342#ifdef FEATURE_OEM_DATA_SUPPORT
343 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
344#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700345 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700346#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700347 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700348
349 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700350
351#ifdef FEATURE_WLAN_SCAN_PNO
352 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
353 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
354 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
355#else
356 NULL,
357 NULL,
358 NULL,
359#endif /* FEATURE_WLAN_SCAN_PNO */
360
361 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700362
Jeff Johnson295189b2012-06-20 16:38:30 -0700363#ifdef WLAN_FEATURE_PACKET_FILTERING
364 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700365 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700366 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700367 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700368 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700369 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700370 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700371 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700372#else
373 NULL,
374 NULL,
375 NULL,
376 NULL,
377#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700378 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700379 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
380 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
381
382 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800383#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700384 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
385#else
386 NULL,
387#endif
388
389#ifdef WLAN_FEATURE_GTK_OFFLOAD
390 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
391 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
392#else
393 NULL,
394 NULL,
395#endif // WLAN_FEATURE_GTK_OFFLOAD
396
397 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
398 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700399#ifdef WLAN_FEATURE_11AC
400 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800401#else
402 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700403#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800404#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800405 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
406#else
schang86c22c42013-03-13 18:41:24 -0700407 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800408#endif
schang86c22c42013-03-13 18:41:24 -0700409 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700410#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700411 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700412#else
413 NULL,
414#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530415#ifdef FEATURE_WLAN_TDLS
416 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
417#else
418 NULL,
419#endif
Leo Chang9056f462013-08-01 19:21:11 -0700420#ifdef FEATURE_WLAN_LPHB
421 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
422#else
423 NULL,
424#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530425
426#ifdef FEATURE_WLAN_BATCH_SCAN
427 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
428#else
429 NULL,
430#endif /* FEATURE_WLAN_BATCH_SCAN */
431
Arif Hussaina5ebce02013-08-09 15:09:58 -0700432 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800433
434 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530435
436 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530437
438#ifdef WLAN_FEATURE_LINK_LAYER_STATS
439 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
440 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
441 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
442#else
443 NULL,
444 NULL,
445 NULL,
446#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530447#ifdef WLAN_FEATURE_EXTSCAN
448 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
449 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
450 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
451 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
452 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
453 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
454 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
455 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
456#else
457 NULL,
458 NULL,
459 NULL,
460 NULL,
461 NULL,
462 NULL,
463 NULL,
464 NULL,
465#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530466 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530467
468 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530469
470 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
schang86c22c42013-03-13 18:41:24 -0700471 /*-------------------------------------------------------------------------
472 Indications
473 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700474 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800475 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530476 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
477 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700478#ifdef WLAN_FEATURE_11W
479 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
480#else
481 NULL,
482#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700483 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
484 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530485#ifdef FEATURE_WLAN_BATCH_SCAN
486 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
487 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
488#else
489 NULL,
490 NULL,
491#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700492 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800493
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530494 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800495 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
496
497 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530498#ifdef FEATURE_WLAN_TDLS
499 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
500#else
501 NULL,
502#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530503
Jeff Johnson295189b2012-06-20 16:38:30 -0700504};
505
506
Jeff Johnsone7245742012-09-05 17:12:55 -0700507/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700508 DAL Request Processing Array - the functions in this table will only be
509 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700510 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700511 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700512WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700513{
514 /*INIT*/
515 WDI_ProcessStartRsp, /* WDI_START_RESP */
516 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
517 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
518
519 /*SCAN*/
520 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
521 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
522 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
523 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
524
525 /* ASSOCIATION*/
526 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
527 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
528 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
529 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
530 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
531
532 /* Security */
533 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
534 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
535 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
536 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
537
538 /* QoS and BA APIs */
539 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
540 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
541 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
542 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
543 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
544
545 /* Miscellaneous Control APIs */
546 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
547 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
548 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
549 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
550 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
551
552 /* BA APIs*/
553 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
554 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700555
Jeff Johnson295189b2012-06-20 16:38:30 -0700556 /* IBSS APIs*/
557 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
558 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
559
560 /*Soft AP APIs*/
561 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
562 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
563 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
564 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
565
566 /* PowerSave APIs */
567 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
568 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
569 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
570 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
571 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
572 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
573 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
574 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
575 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
576 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
577 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
578 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
579 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
580 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
581 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
582 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
583 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
584 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700585
Jeff Johnson295189b2012-06-20 16:38:30 -0700586
587 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
588
589 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
590 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
591#ifdef WLAN_FEATURE_VOWIFI_11R
592 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
593#else
594 NULL,
595#endif /* WLAN_FEATURE_VOWIFI_11R */
596 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
597 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700598#ifdef FEATURE_OEM_DATA_SUPPORT
599 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
600#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700601 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700602#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700603 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
604
Jeff Johnson295189b2012-06-20 16:38:30 -0700605 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700606
Jeff Johnson295189b2012-06-20 16:38:30 -0700607 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700608
Jeff Johnsone7245742012-09-05 17:12:55 -0700609 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
610
Jeff Johnson295189b2012-06-20 16:38:30 -0700611#ifdef FEATURE_WLAN_SCAN_PNO
612 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
613 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
614 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
615#else
616 NULL,
617 NULL,
618 NULL,
619#endif // FEATURE_WLAN_SCAN_PNO
620
621 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700622 /*---------------------------------------------------------------------
623 Indications
624 ---------------------------------------------------------------------*/
625#ifdef WLAN_FEATURE_PACKET_FILTERING
626 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700627 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700628 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700629 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700630 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700631 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700632 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700633 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700634#else
635 NULL,
636 NULL,
637 NULL,
638 NULL,
639#endif // WLAN_FEATURE_PACKET_FILTERING
640
641 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
642 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
643
644 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800645#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700646 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
647#else
648 NULL,
649#endif
650
651#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700652 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
653 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700654#else
655 NULL,
656 NULL,
657#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700658 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
659 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700660#ifdef WLAN_FEATURE_11AC
661 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700662#else
663 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700664#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800665#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800666 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
667#else
668 NULL,
669#endif
schang86c22c42013-03-13 18:41:24 -0700670 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700671#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700672 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700673#else
674 NULL,
675#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530676#ifdef FEATURE_WLAN_TDLS
677 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
678#else
679 NULL,
680#endif
Leo Chang9056f462013-08-01 19:21:11 -0700681#ifdef FEATURE_WLAN_LPHB
682 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
683#else
684 NULL,
685#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530686
687#ifdef FEATURE_WLAN_BATCH_SCAN
688 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
689#else
690 NULL,
691#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800692 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530693
c_hpothu92367912014-05-01 15:18:17 +0530694 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800695
c_hpothu92367912014-05-01 15:18:17 +0530696 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
697
698 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800699
Sunil Duttbd736ed2014-05-26 21:19:41 +0530700
701#ifdef WLAN_FEATURE_LINK_LAYER_STATS
702 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
703 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
704 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
705#else
706 NULL,
707 NULL,
708 NULL,
709#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530710#ifdef WLAN_FEATURE_EXTSCAN
711 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
712 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
713 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
714 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
715 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
716 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
717 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
718 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
719#else
720 NULL,
721 NULL,
722 NULL,
723 NULL,
724 NULL,
725 NULL,
726 NULL,
727 NULL,
728#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530729 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530730
731 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530732
733 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700734 /*---------------------------------------------------------------------
735 Indications
736 ---------------------------------------------------------------------*/
737 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
738 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
739 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
740 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
741 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
742 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
743
744 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
745
746 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
747
Jeff Johnson295189b2012-06-20 16:38:30 -0700748 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700749
750#ifdef FEATURE_WLAN_SCAN_PNO
751 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
752#else
753 NULL,
754#endif // FEATURE_WLAN_SCAN_PNO
755
756#ifdef WLAN_WAKEUP_EVENTS
757 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
758#else // WLAN_WAKEUP_EVENTS
759 NULL,
760#endif // WLAN_WAKEUP_EVENTS
761
762 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800763
Viral Modid86bde22012-12-10 13:09:21 -0800764 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530765#ifdef FEATURE_WLAN_TDLS
766 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
767#else
768 NULL,
769#endif
Leo Chang9056f462013-08-01 19:21:11 -0700770
771#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700772 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700773#else
774 NULL,
775#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700776
777 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700778
779 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530780
781#ifdef FEATURE_WLAN_BATCH_SCAN
782 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
783#else
784 NULL,
785#endif
786
Leo Chang0b0e45a2013-12-15 15:18:55 -0800787#ifdef FEATURE_WLAN_CH_AVOID
788 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
789#else
790 NULL,
791#endif /* FEATURE_WLAN_CH_AVOID */
792
Sunil Duttbd736ed2014-05-26 21:19:41 +0530793 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
794#ifdef WLAN_FEATURE_LINK_LAYER_STATS
795 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
796#else
797 NULL,
798#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530799#ifdef WLAN_FEATURE_EXTSCAN
800 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
801 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
802 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
803 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
804 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
805#else
806 NULL,
807 NULL,
808 NULL,
809 NULL,
810 NULL,
811#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530812#ifdef FEATURE_WLAN_TDLS
813 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
814#else
815 NULL,
816#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530817 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700818};
819
820
Jeff Johnsone7245742012-09-05 17:12:55 -0700821/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700822 WLAN DAL Global Control Block
823 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700824WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700825static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
826
Jeff Johnsone7245742012-09-05 17:12:55 -0700827const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700828
829/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700830WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700831void* WDI_GET_PAL_CTX( void )
832{
Jeff Johnsone7245742012-09-05 17:12:55 -0700833 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700834}/*WDI_GET_PAL_CTX*/
835
Jeff Johnsone7245742012-09-05 17:12:55 -0700836/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700837 Helper inline converters
838 ============================================================================*/
839/*Convert WDI driver type into HAL driver type*/
840WPT_STATIC WPT_INLINE WDI_Status
841WDI_HAL_2_WDI_STATUS
842(
843 eHalStatus halStatus
844);
845
846/*Convert WDI request type into HAL request type*/
847WPT_STATIC WPT_INLINE tHalHostMsgType
848WDI_2_HAL_REQ_TYPE
849(
850 WDI_RequestEnumType wdiReqType
851);
852
853/*Convert WDI response type into HAL response type*/
854WPT_STATIC WPT_INLINE WDI_ResponseEnumType
855HAL_2_WDI_RSP_TYPE
856(
857 tHalHostMsgType halMsg
858);
859
860/*Convert WDI driver type into HAL driver type*/
861WPT_STATIC WPT_INLINE tDriverType
862WDI_2_HAL_DRV_TYPE
863(
864 WDI_DriverType wdiDriverType
865);
866
867/*Convert WDI stop reason into HAL stop reason*/
868WPT_STATIC WPT_INLINE tHalStopType
869WDI_2_HAL_STOP_REASON
870(
871 WDI_StopType wdiStopType
872);
873
874/*Convert WDI scan mode type into HAL scan mode type*/
875WPT_STATIC WPT_INLINE eHalSysMode
876WDI_2_HAL_SCAN_MODE
877(
878 WDI_ScanMode wdiScanMode
879);
880
881/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700882WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700883WDI_2_HAL_SEC_CH_OFFSET
884(
885 WDI_HTSecondaryChannelOffset wdiSecChOffset
886);
887
888/*Convert WDI BSS type into HAL BSS type*/
889WPT_STATIC WPT_INLINE tSirBssType
890WDI_2_HAL_BSS_TYPE
891(
892 WDI_BssType wdiBSSType
893);
894
895/*Convert WDI NW type into HAL NW type*/
896WPT_STATIC WPT_INLINE tSirNwType
897WDI_2_HAL_NW_TYPE
898(
899 WDI_NwType wdiNWType
900);
901
902/*Convert WDI chanel bonding type into HAL cb type*/
903WPT_STATIC WPT_INLINE ePhyChanBondState
904WDI_2_HAL_CB_STATE
905(
906 WDI_PhyChanBondState wdiCbState
907);
908
909/*Convert WDI chanel bonding type into HAL cb type*/
910WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
911WDI_2_HAL_HT_OPER_MODE
912(
913 WDI_HTOperatingMode wdiHTOperMode
914);
915
916/*Convert WDI mimo PS type into HAL mimo PS type*/
917WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
918WDI_2_HAL_MIMO_PS
919(
920 WDI_HTMIMOPowerSaveState wdiHTOperMode
921);
922
923/*Convert WDI ENC type into HAL ENC type*/
924WPT_STATIC WPT_INLINE tAniEdType
925WDI_2_HAL_ENC_TYPE
926(
927 WDI_EncryptType wdiEncType
928);
929
930/*Convert WDI WEP type into HAL WEP type*/
931WPT_STATIC WPT_INLINE tAniWepType
932WDI_2_HAL_WEP_TYPE
933(
934 WDI_WepType wdiWEPType
935);
936
937/*Convert WDI Link State into HAL Link State*/
938WPT_STATIC WPT_INLINE tSirLinkState
939WDI_2_HAL_LINK_STATE
940(
941 WDI_LinkStateType wdiLinkState
942);
943
Jeff Johnsone7245742012-09-05 17:12:55 -0700944/*Translate a STA Context from WDI into HAL*/
945WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700946void
947WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700948(
Jeff Johnson295189b2012-06-20 16:38:30 -0700949 tConfigStaParams* phalConfigSta,
950 WDI_ConfigStaReqInfoType* pwdiConfigSta
951);
Jeff Johnsone7245742012-09-05 17:12:55 -0700952
953/*Translate a Rate set info from WDI into HAL*/
954WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700955WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700956(
Jeff Johnson295189b2012-06-20 16:38:30 -0700957 tSirMacRateSet* pHalRateSet,
958 WDI_RateSet* pwdiRateSet
959);
960
961/*Translate an EDCA Parameter Record from WDI into HAL*/
962WPT_STATIC WPT_INLINE void
963WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700964(
Jeff Johnson295189b2012-06-20 16:38:30 -0700965 tSirMacEdcaParamRecord* phalEdcaParam,
966 WDI_EdcaParamRecord* pWDIEdcaParam
967);
968
969/*Copy a management frame header from WDI fmt into HAL fmt*/
970WPT_STATIC WPT_INLINE void
971WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
972(
973 tSirMacMgmtHdr* pmacMgmtHdr,
974 WDI_MacMgmtHdr* pwdiMacMgmtHdr
975);
976
977/*Copy config bss parameters from WDI fmt into HAL fmt*/
978WPT_STATIC WPT_INLINE void
979WDI_CopyWDIConfigBSSToHALConfigBSS
980(
981 tConfigBssParams* phalConfigBSS,
982 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
983);
984
Jeff Johnsone7245742012-09-05 17:12:55 -0700985/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700986 pointed to by user data */
987WPT_STATIC WPT_INLINE void
988WDI_ExtractRequestCBFromEvent
989(
990 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700991 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700992 void** ppUserData
993);
994
995wpt_uint8
996WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700997(
Jeff Johnson295189b2012-06-20 16:38:30 -0700998 WDI_ControlBlockType* pWDICtx,
999 WDI_BSSSessionType** ppSession
1000);
1001
1002void
1003WDI_AddBcastSTAtoSTATable
1004(
1005 WDI_ControlBlockType* pWDICtx,
1006 WDI_AddStaParams * staParams,
1007 wpt_uint16 usBcastStaIdx
1008);
1009
1010WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001011(
Jeff Johnson295189b2012-06-20 16:38:30 -07001012 WDI_ControlBlockType* pWDICtx,
1013 WDI_EventInfoType* pEventData
1014);
1015
1016void
1017WDI_SetPowerStateCb
1018(
1019 wpt_status status,
1020 unsigned int dxePhyAddr,
1021 void *pContext
1022);
1023
Jeff Johnson295189b2012-06-20 16:38:30 -07001024/**
1025 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001026
1027 @param wdiReqMsgId: WDI Message request Id
1028
1029 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001030 @return Result of the function call
1031*/
1032static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1033{
1034 switch (wdiReqMsgId)
1035 {
1036 CASE_RETURN_STRING( WDI_START_REQ );
1037 CASE_RETURN_STRING( WDI_STOP_REQ );
1038 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1039 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1040 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1041 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1042 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1043 CASE_RETURN_STRING( WDI_JOIN_REQ );
1044 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1045 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1046 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1047 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1048 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1049 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1050 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1051 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1052 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1053 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1054 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1055 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1056 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1057 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001058 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001059 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1060 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1061 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1062 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1063 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1064 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1065 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1066 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1067 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1068 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1069 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1070 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001071 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001072 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301073#ifdef FEATURE_WLAN_TDLS
1074 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301075 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301076#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001077 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1078 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1079 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1080 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1081 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1082 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1083 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1084 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1085 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1086 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1087 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1088 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1089 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1090 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1091 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1092 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1093 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1094 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1095 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1096 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1097 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1098 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1099 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1100 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1101 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001102 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001103 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1104 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1105 #ifdef FEATURE_WLAN_SCAN_PNO
1106 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1107 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1108 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1109 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001110#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001111 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001112#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001113 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1114 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1115 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1116 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1117 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1118 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1119 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1120 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1121 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301122 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001123 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001124 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001125#ifdef WLAN_FEATURE_11W
1126 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1127#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301128#ifdef FEATURE_WLAN_BATCH_SCAN
1129 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1130 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1131 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1132#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301133 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1134 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001135 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301136#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1137 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1138 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1139 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1140#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301141#ifdef WLAN_FEATURE_EXTSCAN
1142 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1143 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1144 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1145 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1146 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1147 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1148 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1149 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1150#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301151 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301152 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301153 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Jeff Johnson295189b2012-06-20 16:38:30 -07001154 default:
1155 return "Unknown WDI MessageId";
1156 }
1157}
1158
1159
1160
1161/**
1162 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001163
1164 @param wdiRespMsgId: WDI Message response Id
1165
1166 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001167 @return Result of the function call
1168*/
1169static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1170{
1171 switch (wdiRespMsgId)
1172 {
1173 CASE_RETURN_STRING( WDI_START_RESP );
1174 CASE_RETURN_STRING( WDI_STOP_RESP );
1175 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1176 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1177 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1178 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1179 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1180 CASE_RETURN_STRING( WDI_JOIN_RESP );
1181 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1182 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1183 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1184 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1185 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1186 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1187 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1188 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1189 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1190 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1191 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1192 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1193 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1194 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1195 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1196 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1197 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1198 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1199 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1200 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1201 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1202 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1203 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1204 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1205 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1206 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1207 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301208#ifdef FEATURE_WLAN_TDLS
1209 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301210 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301211 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1212#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001213 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1214 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1215 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1216 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1217 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1218 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1219 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1220 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1221 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1222 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1223 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1224 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1225 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1226 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1227 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1228 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1229 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1230 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1231 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1232 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1233 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1234 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1235 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1236 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1237 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001238 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001239 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1240 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1241 #ifdef FEATURE_WLAN_SCAN_PNO
1242 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1243 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1244 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1245 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001246#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001247 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001248#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001249 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1250 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1251 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1252 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1253 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1254 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1255 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1256 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001257 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301258#ifdef FEATURE_WLAN_BATCH_SCAN
1259 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1260#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001261 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301262 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301263 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301264#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1265 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1266 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1267 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1268#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301269#ifdef WLAN_FEATURE_EXTSCAN
1270 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1271 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1272 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1273 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1274 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1275 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1276 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1277 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1278 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1279 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1280 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1281 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1282 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1283
1284#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301285 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301286 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001287 default:
1288 return "Unknown WDI MessageId";
1289 }
1290}
1291
1292/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301293 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1294 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301295 @param capabilityBitmap - Base address of a 4 element Bitmap array
1296 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301297 @see
1298 @returns None
1299 */
1300void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1301{
Abhishek Singh08b60122014-02-04 18:05:23 +05301302 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301303 char capStr[512];
1304 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301305 for (j = 0; j < 4; j++) {
1306 for (i = 0; i < 32; i++) {
1307 if ((*(capabilityBitmap + j) & (1 << i))) {
1308 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301309 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1310 pCapStr += strlen("MCC");
1311 break;
1312 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1313 pCapStr += strlen("P2P");
1314 break;
1315 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1316 pCapStr += strlen("DOT11AC");
1317 break;
1318 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1319 pCapStr += strlen("SLM_SESSIONIZATION");
1320 break;
1321 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1322 pCapStr += strlen("DOT11AC_OPMODE");
1323 break;
1324 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1325 pCapStr += strlen("SAP32STA");
1326 break;
1327 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1328 pCapStr += strlen("TDLS");
1329 break;
1330 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1331 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1332 break;
1333 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1334 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1335 break;
1336 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1337 pCapStr += strlen("BEACON_OFFLOAD");
1338 break;
1339 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1340 pCapStr += strlen("SCAN_OFFLOAD");
1341 break;
1342 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1343 pCapStr += strlen("ROAM_OFFLOAD");
1344 break;
1345 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1346 pCapStr += strlen("BCN_MISS_OFFLOAD");
1347 break;
1348 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1349 pCapStr += strlen("STA_POWERSAVE");
1350 break;
1351 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1352 pCapStr += strlen("AP_UAPSD");
1353 break;
1354 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1355 pCapStr += strlen("AP_DFS");
1356 break;
1357 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1358 pCapStr += strlen("BLOCKACK");
1359 break;
1360 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1361 pCapStr += strlen("PHY_ERR");
1362 break;
1363 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1364 pCapStr += strlen("BCN_FILTER");
1365 break;
1366 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1367 pCapStr += strlen("RTT");
1368 break;
1369 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1370 pCapStr += strlen("RATECTRL");
1371 break;
1372 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1373 pCapStr += strlen("WOW");
1374 break;
1375 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1376 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1377 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301378 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1379 pCapStr += strlen("FW_IN_TX_PATH");
1380 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301381 case HT40_OBSS_SCAN:
1382 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1383 "%s", "HT40_OBSS_SCAN");
1384 pCapStr += strlen("HT40_OBSS_SCAN");
1385 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301386 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1387 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1388 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1389 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1390 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301391 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1392 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1393 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301394 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1395 pCapStr += strlen("CH_SWITCH_V1");
1396 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301397#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1398 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1399 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1400 break;
1401#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301402#ifdef WLAN_FEATURE_EXTSCAN
1403 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1404 pCapStr += strlen("EXTENDED_SCAN");
1405 break;
1406#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301407 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1408 pCapStr += strlen("MU_MIMO");
1409 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301410
Mihir Shetec34258c2014-07-30 17:50:27 +05301411 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1412 pCapStr += strlen("DYNAMIC_WMM_PS");
1413 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301414 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1415 pCapStr += strlen("FW_STATS");
1416 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301417 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1418 pCapStr += strlen("MAC_SPOOFED_SCAN");
1419 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301420 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1421 pCapStr += strlen("WPS_PRBRSP_TMPL");
1422 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301423 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1424 pCapStr += strlen("BCN_IE_FLT_DELTA");
1425 break;
1426
Siddharth Bhal171788a2014-09-29 21:02:40 +05301427
Mihir Shetebf8897b2014-11-26 14:54:39 +05301428 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1429 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1430 break;
1431
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301432 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1433 pCapStr += strlen("DISA");
1434 break;
1435
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301436 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1437 pCapStr += strlen("TDLS_OFF_CHANNEL");
1438 break;
1439
Abhishek Singh08b60122014-02-04 18:05:23 +05301440 }
1441 *pCapStr++ = ',';
1442 *pCapStr++ = ' ';
1443 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301444 }
1445 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301446 pCapStr -= 2;
1447 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301448 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301450}
1451
1452/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001453 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001454
1455 @param halStatusId: HAL status Id
1456
1457 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001458 @return Result of the function call
1459*/
1460static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1461{
1462 switch (halStatusId)
1463 {
1464 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1465 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1466 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1467 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1468 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1469 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1470 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1471 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1472 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1473 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1474 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1475 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1476 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1477 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1478 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1479 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1480 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1481 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1482 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1483 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1484 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1485 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1486 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1487 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1488 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1489 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1490 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1491 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1492 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1493 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1494 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1495 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1496 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1497 default:
1498 return "Unknown HAL status";
1499 }
1500}
1501
Jeff Johnsone7245742012-09-05 17:12:55 -07001502/*========================================================================
1503
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001505
Jeff Johnson295189b2012-06-20 16:38:30 -07001506==========================================================================*/
1507
1508/**
1509 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001510
Jeff Johnson295189b2012-06-20 16:38:30 -07001511 DAL will allocate all the resources it needs. It will open PAL, it will also
1512 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001513 DXE/SMD or any other drivers that they need.
1514
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301515 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001516 ppWDIGlobalCtx: output pointer of Global Context
1517 pWdiDevCapability: output pointer of device capability
1518
1519 @return Result of the function call
1520*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001521WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001522WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001523(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301524 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001525 void** ppWDIGlobalCtx,
1526 WDI_DeviceCapabilityType* pWdiDevCapability,
1527 unsigned int driverType
1528)
1529{
1530 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001531 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001532 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001533 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1535
1536 /*---------------------------------------------------------------------
1537 Sanity check
1538 ---------------------------------------------------------------------*/
1539 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1540 {
1541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1542 "Invalid input parameters in WDI_Init");
1543
Jeff Johnsone7245742012-09-05 17:12:55 -07001544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001545 }
1546
1547 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001548 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001549 ---------------------------------------------------------------------*/
1550 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1551 {
1552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1553 "WDI module already initialized - return");
1554
Jeff Johnsone7245742012-09-05 17:12:55 -07001555 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001556 }
1557
1558 /*Module is now initialized - this flag is to ensure the fact that multiple
1559 init will not happen on WDI
1560 !! - potential race does exist because read and set are not atomic,
1561 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001562 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001563
1564 /*Setup the control block */
1565 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301566 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001567
1568 /*Setup the STA Table*/
1569 wdiStatus = WDI_STATableInit(&gWDICb);
1570 if ( WDI_STATUS_SUCCESS != wdiStatus )
1571 {
1572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1573 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001574 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001575 goto fail_STATableInit;
1576 }
1577
1578 /*------------------------------------------------------------------------
1579 Open the PAL
1580 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301581 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001582 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1583 {
1584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1585 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001586 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001587 goto fail_wpalOpen;
1588 }
1589
1590 /*Initialize main synchro mutex - it will be used to ensure integrity of
1591 the main WDI Control Block*/
1592 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1593 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1594 {
1595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1596 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001597 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001598 goto fail_mutex;
1599 }
1600
1601 /*Initialize the response timer - it will be used to time all messages
1602 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001603 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1604 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001605 &gWDICb);
1606 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1607 {
1608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1609 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001610 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001611 goto fail_timer;
1612 }
1613
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001614 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1615 WDI_SsrTimerCB,
1616 &gWDICb);
1617 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1618 {
1619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1620 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001621 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001622 goto fail_timer2;
1623 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001624 /* Initialize the WDI Pending Request Queue*/
1625 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1626 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1627 {
1628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1629 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001630 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001631 goto fail_pend_queue;
1632 }
1633
1634 /*Init WDI Pending Assoc Id Queue */
1635 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1636 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1637 {
1638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1639 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001640 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001641 goto fail_assoc_queue;
1642 }
1643
1644 /*Initialize the BSS sessions pending Queue */
1645 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1646 {
1647 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1648 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1649 {
1650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1651 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001652 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001653 goto fail_bss_queue;
1654 }
1655 }
1656
1657 /*Indicate the control block is sufficiently initialized for callbacks*/
1658 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1659
1660 /*------------------------------------------------------------------------
1661 Initialize the Data Path Utility Module
1662 ------------------------------------------------------------------------*/
1663 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1664 if ( WDI_STATUS_SUCCESS != wdiStatus )
1665 {
1666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1667 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001668 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001669 goto fail_dp_util_init;
1670 }
1671
1672 /* Init Set power state event */
1673 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001674 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001675 {
1676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1677 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001678 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001679 goto fail_power_event;
1680 }
1681
1682 /* Init WCTS action event */
1683 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001684 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001685 {
1686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1687 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001688 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001689 goto fail_wcts_event;
1690 }
1691
1692 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001693 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001694 ------------------------------------------------------------------------*/
1695 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1696 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001697 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001698 wctsCBs.wctsRxMsgCBData = &gWDICb;
1699
Jeff Johnsone7245742012-09-05 17:12:55 -07001700 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001701 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001702 WDI_CT_CHANNEL_SIZE,
1703 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001704
1705 if ( NULL == gWDICb.wctsHandle )
1706 {
1707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001708 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001709 goto fail_wcts_open;
1710 }
1711
1712 gWDICb.driverMode = (tDriverType)driverType;
1713 /* FTM mode not need to open Transport Driver */
1714 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001715 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001716 /*------------------------------------------------------------------------
1717 Open the Data Transport
1718 ------------------------------------------------------------------------*/
1719 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1720 {
1721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001722 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001723 goto fail_wdts_open;
1724 }
1725 }
1726
1727 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001728 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301729 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 /*Send the context as a ptr to the global WDI Control Block*/
1731 *ppWDIGlobalCtx = &gWDICb;
1732
1733 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001734 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001735 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1736 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1737 return WDI_STATUS_SUCCESS;
1738
1739 /* ERROR handlers
1740 Undo everything that completed successfully */
1741
1742 fail_wdts_open:
1743 {
1744 wpt_status eventStatus;
1745
1746 /* Closing WCTS in this scenario is tricky since it has to close
1747 the SMD channel and then we get notified asynchronously when
1748 the channel has been closed. So we take some of the logic from
1749 the "normal" close procedure in WDI_Close()
1750 */
1751
1752 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001753 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001754 {
1755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001756 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001757 }
1758
1759 WCTS_CloseTransport(gWDICb.wctsHandle);
1760
1761 /* Wait for WCTS to close the control transport. If we were able
1762 to reset the event flag, then we'll wait for the event,
1763 otherwise we'll wait for a maximum amount of time required for
1764 the channel to be closed */
1765 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1766 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001767 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001768 WDI_WCTS_ACTION_TIMEOUT);
1769 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1770 {
1771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001772 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001773 }
1774 }
1775 else
1776 {
1777 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1778 }
1779 }
1780 fail_wcts_open:
1781 wpalEventDelete(&gWDICb.wctsActionEvent);
1782 fail_wcts_event:
1783 wpalEventDelete(&gWDICb.setPowerStateEvent);
1784 fail_power_event:
1785 WDI_DP_UtilsExit(&gWDICb);
1786 fail_dp_util_init:
1787 gWDICb.magic = 0;
1788 fail_bss_queue:
1789 /* entries 0 thru i-1 were successfully initialized */
1790 while (0 < i)
1791 {
1792 i--;
1793 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1794 }
1795 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1796 fail_assoc_queue:
1797 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1798 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001799 wpalTimerDelete(&gWDICb.ssrTimer);
1800 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001801 wpalTimerDelete(&gWDICb.wptResponseTimer);
1802 fail_timer:
1803 wpalMutexDelete(&gWDICb.wptMutex);
1804 fail_mutex:
1805 wpalClose(gWDICb.pPALContext);
1806 fail_wpalOpen:
1807 WDI_STATableClose(&gWDICb);
1808 fail_STATableInit:
1809 gWDIInitialized = eWLAN_PAL_FALSE;
1810
1811 return WDI_STATUS_E_FAILURE;
1812
1813}/*WDI_Init*/;
1814
1815/**
1816 @brief WDI_Start will be called when the upper MAC is ready to
1817 commence operation with the WLAN Device. Upon the call
1818 of this API the WLAN DAL will pack and send a HAL Start
1819 message to the lower RIVA sub-system if the SMD channel
1820 has been fully opened and the RIVA subsystem is up.
1821
1822 If the RIVA sub-system is not yet up and running DAL
1823 will queue the request for Open and will wait for the
1824 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001825 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001826
1827 WDI_Init must have been called.
1828
Jeff Johnsone7245742012-09-05 17:12:55 -07001829 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001830 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001831
Jeff Johnson295189b2012-06-20 16:38:30 -07001832 wdiStartRspCb: callback for passing back the response of
1833 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001834
Jeff Johnson295189b2012-06-20 16:38:30 -07001835 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001836 callback
1837
Jeff Johnson295189b2012-06-20 16:38:30 -07001838 @see WDI_Start
1839 @return Result of the function call
1840*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001841WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001842WDI_Start
1843(
1844 WDI_StartReqParamsType* pwdiStartParams,
1845 WDI_StartRspCb wdiStartRspCb,
1846 void* pUserData
1847)
1848{
1849 WDI_EventInfoType wdiEventData;
1850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1851
1852 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001853 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 ------------------------------------------------------------------------*/
1855 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1856 {
1857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1858 "WDI API call before module is initialized - Fail request");
1859
Jeff Johnsone7245742012-09-05 17:12:55 -07001860 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001861 }
1862
1863 /*------------------------------------------------------------------------
1864 Fill in Event data and post to the Main FSM
1865 ------------------------------------------------------------------------*/
1866 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001867 wdiEventData.pEventData = pwdiStartParams;
1868 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1869 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001870 wdiEventData.pUserData = pUserData;
1871
1872 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1873
1874}/*WDI_Start*/
1875
1876/**
1877 @brief WDI_Stop will be called when the upper MAC is ready to
1878 stop any operation with the WLAN Device. Upon the call
1879 of this API the WLAN DAL will pack and send a HAL Stop
1880 message to the lower RIVA sub-system if the DAL Core is
1881 in started state.
1882
1883 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001884
1885 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001886
1887 WDI_Start must have been called.
1888
Jeff Johnsone7245742012-09-05 17:12:55 -07001889 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001890 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001891
Jeff Johnson295189b2012-06-20 16:38:30 -07001892 wdiStopRspCb: callback for passing back the response of
1893 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001894
Jeff Johnson295189b2012-06-20 16:38:30 -07001895 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001896 callback
1897
Jeff Johnson295189b2012-06-20 16:38:30 -07001898 @see WDI_Start
1899 @return Result of the function call
1900*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001901WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001902WDI_Stop
1903(
1904 WDI_StopReqParamsType* pwdiStopParams,
1905 WDI_StopRspCb wdiStopRspCb,
1906 void* pUserData
1907)
1908{
1909 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001910 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1912
1913 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 ------------------------------------------------------------------------*/
1916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1917 {
1918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1919 "WDI API call before module is initialized - Fail request");
1920
Jeff Johnsone7245742012-09-05 17:12:55 -07001921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001922 }
1923
Jeff Johnson43971f52012-07-17 12:26:56 -07001924 /*Access to the global state must be locked before cleaning */
1925 wpalMutexAcquire(&pWDICtx->wptMutex);
1926
1927 /*Clear all pending request*/
1928 WDI_ClearPendingRequests(pWDICtx);
1929
1930 /*We have completed cleaning unlock now*/
1931 wpalMutexRelease(&pWDICtx->wptMutex);
1932
Jeff Johnson295189b2012-06-20 16:38:30 -07001933 /* Free the global variables */
1934 wpalMemoryFree(gpHostWlanFeatCaps);
1935 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001936 gpHostWlanFeatCaps = NULL;
1937 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001938
1939 /*------------------------------------------------------------------------
1940 Fill in Event data and post to the Main FSM
1941 ------------------------------------------------------------------------*/
1942 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001943 wdiEventData.pEventData = pwdiStopParams;
1944 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1945 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001946 wdiEventData.pUserData = pUserData;
1947
1948 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1949
1950}/*WDI_Stop*/
1951
1952
1953
1954/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001955 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001956 needs to interact with DAL. DAL will free its control
1957 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001958
1959 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001960
1961 WDI_Stop must have been called.
1962
1963 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001964
Jeff Johnson295189b2012-06-20 16:38:30 -07001965 @see WDI_Stop
1966 @return Result of the function call
1967*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001969WDI_Close
1970(
1971 void
1972)
1973{
1974 wpt_uint8 i;
1975 WDI_EventInfoType wdiEventData;
1976 wpt_status wptStatus;
1977 wpt_status eventStatus;
1978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1979
1980 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001981 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001982 ------------------------------------------------------------------------*/
1983 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1984 {
1985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1986 "WDI API call before module is initialized - Fail request");
1987
Jeff Johnsone7245742012-09-05 17:12:55 -07001988 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001989 }
1990
1991 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1992 (the control transport will be closed by the FSM and we'll want
1993 to wait until that completes)*/
1994 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001995 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 {
1997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001998 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001999 /* fall through and try to finish closing via the FSM */
2000 }
2001
2002 /*------------------------------------------------------------------------
2003 Fill in Event data and post to the Main FSM
2004 ------------------------------------------------------------------------*/
2005 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002006 wdiEventData.pEventData = NULL;
2007 wdiEventData.uEventDataSize = 0;
2008 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002009 wdiEventData.pUserData = NULL;
2010
2011 gWDIInitialized = eWLAN_PAL_FALSE;
2012
2013 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2014
2015 /*Wait for WCTS to close the control transport
2016 (but only if we were able to reset the event flag*/
2017 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2018 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002019 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002020 WDI_WCTS_ACTION_TIMEOUT);
2021 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2022 {
2023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002024 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 }
2026 }
2027
2028 /* Destroy the WCTS action event */
2029 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2030 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2031 {
2032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2033 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 }
2036
2037 /* Destroy the Set Power State event */
2038 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2039 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2040 {
2041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2042 "WDI Close failed to destroy an event");
2043
Jeff Johnsone7245742012-09-05 17:12:55 -07002044 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 }
2046
2047 /*------------------------------------------------------------------------
2048 Closes the Data Path Utility Module
2049 ------------------------------------------------------------------------*/
2050 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2051 {
2052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2053 "WDI Init failed to close the DP Util Module");
2054
Jeff Johnsone7245742012-09-05 17:12:55 -07002055 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002056 }
2057
2058 /*destroy the BSS sessions pending Queue */
2059 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2060 {
2061 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2062 }
2063
2064 /* destroy the WDI Pending Assoc Id Request Queue*/
2065 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2066
2067 /* destroy the WDI Pending Request Queue*/
2068 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002069
Jeff Johnson295189b2012-06-20 16:38:30 -07002070 /*destroy the response timer */
2071 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2072
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002073 /*destroy the SSR timer */
2074 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2075
Jeff Johnson295189b2012-06-20 16:38:30 -07002076 /*invalidate the main synchro mutex */
2077 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2078 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2079 {
2080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2081 "Failed to delete mutex %d", wptStatus);
2082 WDI_ASSERT(0);
2083 }
2084
2085 /*Clear control block. note that this will clear the "magic"
2086 which will inhibit all asynchronous callbacks*/
2087 WDI_CleanCB(&gWDICb);
2088
2089 return wptStatus;
2090
2091}/*WDI_Close*/
2092
2093/**
2094 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2095 This will do most of the WDI stop & close
2096 operations without doing any handshake with Riva
2097
2098 This will also make sure that the control transport
2099 will NOT be closed.
2100
2101 This request will not be queued.
2102
2103
2104 WDI_Start must have been called.
2105
2106 @param closeTransport: Close control channel if this is set
2107
2108 @return Result of the function call
2109*/
2110WDI_Status
2111WDI_Shutdown
2112(
2113 wpt_boolean closeTransport
2114)
2115{
2116 WDI_EventInfoType wdiEventData;
2117 wpt_status wptStatus;
2118 int i = 0;
2119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2120
2121 /*------------------------------------------------------------------------
2122 Sanity Check
2123 ------------------------------------------------------------------------*/
2124 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2125 {
2126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2127 "WDI API call before module is initialized - Fail request");
2128
2129 return WDI_STATUS_E_NOT_ALLOWED;
2130 }
2131
2132 /*------------------------------------------------------------------------
2133 Fill in Event data and post to the Main FSM
2134 ------------------------------------------------------------------------*/
2135 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2136 wdiEventData.pEventData = NULL;
2137 wdiEventData.uEventDataSize = 0;
2138
2139 /* Shutdown will not be queued, if the state is busy timer will be
2140 * stopped & this message will be processed.*/
2141 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2142 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2143 {
2144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002145 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002146 }
2147 /* Destroy the Set Power State event */
2148 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2149 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2150 {
2151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2152 "WDI Close failed to destroy an event");
2153
2154 WDI_ASSERT(0);
2155 }
2156 /*------------------------------------------------------------------------
2157 Closes the Data Path Utility Module
2158 ------------------------------------------------------------------------*/
2159 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2160 {
2161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2162 "WDI Init failed to close the DP Util Module");
2163
2164 WDI_ASSERT(0);
2165 }
2166 if ( closeTransport )
2167 {
2168 /* Close control transport, called from module unload */
2169 WCTS_CloseTransport(gWDICb.wctsHandle);
2170 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002171 else
2172 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002173 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002174 the pending messages in the transport queue */
2175 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2176 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002177 /*destroy the BSS sessions pending Queue */
2178 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2179 {
2180 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2181 }
2182
2183 /* destroy the WDI Pending Assoc Id Request Queue*/
2184 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2185 /* destroy the WDI Pending Request Queue*/
2186 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2187 /*destroy the response timer */
2188 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002189 /*destroy the SSR timer */
2190 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002191
2192 /*invalidate the main synchro mutex */
2193 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2194 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2195 {
2196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002197 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002198 WDI_ASSERT(0);
2199 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002200 /* Free the global variables */
2201 wpalMemoryFree(gpHostWlanFeatCaps);
2202 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002203 gpHostWlanFeatCaps = NULL;
2204 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002205 /*Clear control block. note that this will clear the "magic"
2206 which will inhibit all asynchronous callbacks*/
2207 WDI_CleanCB(&gWDICb);
2208 return wptStatus;
2209
2210}/*WDI_Shutdown*/
2211
2212
Jeff Johnsone7245742012-09-05 17:12:55 -07002213/*========================================================================
2214
Jeff Johnson295189b2012-06-20 16:38:30 -07002215 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002216
Jeff Johnson295189b2012-06-20 16:38:30 -07002217==========================================================================*/
2218
2219/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002220 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002221 the WLAN Device to get ready for a scan procedure. Upon
2222 the call of this API the WLAN DAL will pack and send a
2223 HAL Init Scan request message to the lower RIVA
2224 sub-system if DAL is in state STARTED.
2225
2226 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002227 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002228
2229 WDI_Start must have been called.
2230
2231 @param wdiInitScanParams: the init scan parameters as specified
2232 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002233
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 wdiInitScanRspCb: callback for passing back the response
2235 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002236
Jeff Johnson295189b2012-06-20 16:38:30 -07002237 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002238 callback
2239
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 @see WDI_Start
2241 @return Result of the function call
2242*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002243WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002244WDI_InitScanReq
2245(
2246 WDI_InitScanReqParamsType* pwdiInitScanParams,
2247 WDI_InitScanRspCb wdiInitScanRspCb,
2248 void* pUserData
2249)
2250{
2251 WDI_EventInfoType wdiEventData;
2252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2253
2254 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002255 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 ------------------------------------------------------------------------*/
2257 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2258 {
2259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2260 "WDI API call before module is initialized - Fail request");
2261
Jeff Johnsone7245742012-09-05 17:12:55 -07002262 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002263 }
2264
2265 /*------------------------------------------------------------------------
2266 Fill in Event data and post to the Main FSM
2267 ------------------------------------------------------------------------*/
2268 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002269 wdiEventData.pEventData = pwdiInitScanParams;
2270 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2271 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002272 wdiEventData.pUserData = pUserData;
2273
2274 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2275
2276}/*WDI_InitScanReq*/
2277
2278/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002279 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002280 wishes to change the Scan channel on the WLAN Device.
2281 Upon the call of this API the WLAN DAL will pack and
2282 send a HAL Start Scan request message to the lower RIVA
2283 sub-system if DAL is in state STARTED.
2284
2285 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002286 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002287
2288 WDI_InitScanReq must have been called.
2289
Jeff Johnsone7245742012-09-05 17:12:55 -07002290 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 wdiStartScanRspCb: callback for passing back the
2294 response of the start scan operation received from the
2295 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002296
Jeff Johnson295189b2012-06-20 16:38:30 -07002297 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 callback
2299
Jeff Johnson295189b2012-06-20 16:38:30 -07002300 @see WDI_InitScanReq
2301 @return Result of the function call
2302*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002303WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002304WDI_StartScanReq
2305(
2306 WDI_StartScanReqParamsType* pwdiStartScanParams,
2307 WDI_StartScanRspCb wdiStartScanRspCb,
2308 void* pUserData
2309)
2310{
2311 WDI_EventInfoType wdiEventData;
2312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2313
2314 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 ------------------------------------------------------------------------*/
2317 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2318 {
2319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2320 "WDI API call before module is initialized - Fail request");
2321
Jeff Johnsone7245742012-09-05 17:12:55 -07002322 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002323 }
2324
2325 /*------------------------------------------------------------------------
2326 Fill in Event data and post to the Main FSM
2327 ------------------------------------------------------------------------*/
2328 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002329 wdiEventData.pEventData = pwdiStartScanParams;
2330 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2331 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002332 wdiEventData.pUserData = pUserData;
2333
2334 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2335
2336}/*WDI_StartScanReq*/
2337
2338
2339/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002340 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002341 wants to end scanning for a particular channel that it
2342 had set before by calling Scan Start on the WLAN Device.
2343 Upon the call of this API the WLAN DAL will pack and
2344 send a HAL End Scan request message to the lower RIVA
2345 sub-system if DAL is in state STARTED.
2346
2347 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002349
2350 WDI_StartScanReq must have been called.
2351
Jeff Johnsone7245742012-09-05 17:12:55 -07002352 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002354
Jeff Johnson295189b2012-06-20 16:38:30 -07002355 wdiEndScanRspCb: callback for passing back the response
2356 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002357
Jeff Johnson295189b2012-06-20 16:38:30 -07002358 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002359 callback
2360
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 @see WDI_StartScanReq
2362 @return Result of the function call
2363*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002364WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002365WDI_EndScanReq
2366(
2367 WDI_EndScanReqParamsType* pwdiEndScanParams,
2368 WDI_EndScanRspCb wdiEndScanRspCb,
2369 void* pUserData
2370)
2371{
2372 WDI_EventInfoType wdiEventData;
2373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2374
2375 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002376 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002377 ------------------------------------------------------------------------*/
2378 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2379 {
2380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2381 "WDI API call before module is initialized - Fail request");
2382
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 }
2385
2386 /*------------------------------------------------------------------------
2387 Fill in Event data and post to the Main FSM
2388 ------------------------------------------------------------------------*/
2389 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002390 wdiEventData.pEventData = pwdiEndScanParams;
2391 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2392 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002393 wdiEventData.pUserData = pUserData;
2394
2395 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2396
2397}/*WDI_EndScanReq*/
2398
2399
2400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002402 completed the scan process on the WLAN Device. Upon the
2403 call of this API the WLAN DAL will pack and send a HAL
2404 Finish Scan Request request message to the lower RIVA
2405 sub-system if DAL is in state STARTED.
2406
2407 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002409
2410 WDI_InitScanReq must have been called.
2411
Jeff Johnsone7245742012-09-05 17:12:55 -07002412 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002413 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002414
Jeff Johnson295189b2012-06-20 16:38:30 -07002415 wdiFinishScanRspCb: callback for passing back the
2416 response of the finish scan operation received from the
2417 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002418
Jeff Johnson295189b2012-06-20 16:38:30 -07002419 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002420 callback
2421
Jeff Johnson295189b2012-06-20 16:38:30 -07002422 @see WDI_InitScanReq
2423 @return Result of the function call
2424*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002426WDI_FinishScanReq
2427(
2428 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2429 WDI_FinishScanRspCb wdiFinishScanRspCb,
2430 void* pUserData
2431)
2432{
2433 WDI_EventInfoType wdiEventData;
2434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2435
2436 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002437 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002438 ------------------------------------------------------------------------*/
2439 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2440 {
2441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2442 "WDI API call before module is initialized - Fail request");
2443
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002445 }
2446
2447 /*------------------------------------------------------------------------
2448 Fill in Event data and post to the Main FSM
2449 ------------------------------------------------------------------------*/
2450 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002451 wdiEventData.pEventData = pwdiFinishScanParams;
2452 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2453 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002454 wdiEventData.pUserData = pUserData;
2455
2456 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2457
2458}/*WDI_FinishScanReq*/
2459
Jeff Johnsone7245742012-09-05 17:12:55 -07002460/*========================================================================
2461
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002463
Jeff Johnson295189b2012-06-20 16:38:30 -07002464==========================================================================*/
2465
2466/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002467 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 to start an association procedure to a BSS. Upon the
2469 call of this API the WLAN DAL will pack and send a HAL
2470 Join request message to the lower RIVA sub-system if
2471 DAL is in state STARTED.
2472
2473 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002474 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002475
2476 WDI_Start must have been called.
2477
Jeff Johnsone7245742012-09-05 17:12:55 -07002478 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002479 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002480
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 wdiJoinRspCb: callback for passing back the response of
2482 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002483
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002485 callback
2486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 @see WDI_Start
2488 @return Result of the function call
2489*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002490WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002491WDI_JoinReq
2492(
2493 WDI_JoinReqParamsType* pwdiJoinParams,
2494 WDI_JoinRspCb wdiJoinRspCb,
2495 void* pUserData
2496)
2497{
2498 WDI_EventInfoType wdiEventData;
2499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2500
2501 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002502 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 ------------------------------------------------------------------------*/
2504 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2505 {
2506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2507 "WDI API call before module is initialized - Fail request");
2508
Jeff Johnsone7245742012-09-05 17:12:55 -07002509 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002510 }
2511
2512 /*------------------------------------------------------------------------
2513 Fill in Event data and post to the Main FSM
2514 ------------------------------------------------------------------------*/
2515 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002516 wdiEventData.pEventData = pwdiJoinParams;
2517 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2518 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002519 wdiEventData.pUserData = pUserData;
2520
2521 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2522
2523}/*WDI_JoinReq*/
2524
2525/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002526 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002527 wishes to configure the newly acquired or in process of
2528 being acquired BSS to the HW . Upon the call of this API
2529 the WLAN DAL will pack and send a HAL Config BSS request
2530 message to the lower RIVA sub-system if DAL is in state
2531 STARTED.
2532
2533 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002534 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002535
2536 WDI_JoinReq must have been called.
2537
Jeff Johnsone7245742012-09-05 17:12:55 -07002538 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002539 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002540
Jeff Johnson295189b2012-06-20 16:38:30 -07002541 wdiConfigBSSRspCb: callback for passing back the
2542 response of the config BSS operation received from the
2543 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002544
Jeff Johnson295189b2012-06-20 16:38:30 -07002545 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002546 callback
2547
Jeff Johnson295189b2012-06-20 16:38:30 -07002548 @see WDI_JoinReq
2549 @return Result of the function call
2550*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002551WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002552WDI_ConfigBSSReq
2553(
2554 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2555 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2556 void* pUserData
2557)
2558{
2559 WDI_EventInfoType wdiEventData;
2560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2561
2562 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002563 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 ------------------------------------------------------------------------*/
2565 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2566 {
2567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2568 "WDI API call before module is initialized - Fail request");
2569
Jeff Johnsone7245742012-09-05 17:12:55 -07002570 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002571 }
2572
2573 /*------------------------------------------------------------------------
2574 Fill in Event data and post to the Main FSM
2575 ------------------------------------------------------------------------*/
2576 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002577 wdiEventData.pEventData = pwdiConfigBSSParams;
2578 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2579 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002580 wdiEventData.pUserData = pUserData;
2581
2582 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2583
2584}/*WDI_ConfigBSSReq*/
2585
2586/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 disassociating from the BSS and wishes to notify HW.
2589 Upon the call of this API the WLAN DAL will pack and
2590 send a HAL Del BSS request message to the lower RIVA
2591 sub-system if DAL is in state STARTED.
2592
2593 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002594 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002595
2596 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2597
Jeff Johnsone7245742012-09-05 17:12:55 -07002598 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002599 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002600
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 wdiDelBSSRspCb: callback for passing back the response
2602 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002603
Jeff Johnson295189b2012-06-20 16:38:30 -07002604 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 callback
2606
2607 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002608 @return Result of the function call
2609*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002610WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002611WDI_DelBSSReq
2612(
2613 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2614 WDI_DelBSSRspCb wdiDelBSSRspCb,
2615 void* pUserData
2616)
2617{
2618 WDI_EventInfoType wdiEventData;
2619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2620
2621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002622 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 ------------------------------------------------------------------------*/
2624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2625 {
2626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2627 "WDI API call before module is initialized - Fail request");
2628
Jeff Johnsone7245742012-09-05 17:12:55 -07002629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 }
2631
2632 /*------------------------------------------------------------------------
2633 Fill in Event data and post to the Main FSM
2634 ------------------------------------------------------------------------*/
2635 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002636 wdiEventData.pEventData = pwdiDelBSSParams;
2637 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2638 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002639 wdiEventData.pUserData = pUserData;
2640
2641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2642
2643}/*WDI_DelBSSReq*/
2644
2645/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002646 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002647 associated to a BSS and wishes to configure HW for
2648 associated state. Upon the call of this API the WLAN DAL
2649 will pack and send a HAL Post Assoc request message to
2650 the lower RIVA sub-system if DAL is in state STARTED.
2651
2652 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002653 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002654
2655 WDI_JoinReq must have been called.
2656
2657 @param wdiPostAssocReqParams: the assoc parameters as specified
2658 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002659
Jeff Johnson295189b2012-06-20 16:38:30 -07002660 wdiPostAssocRspCb: callback for passing back the
2661 response of the post assoc operation received from the
2662 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002663
Jeff Johnson295189b2012-06-20 16:38:30 -07002664 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002665 callback
2666
Jeff Johnson295189b2012-06-20 16:38:30 -07002667 @see WDI_JoinReq
2668 @return Result of the function call
2669*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002670WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002671WDI_PostAssocReq
2672(
2673 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2674 WDI_PostAssocRspCb wdiPostAssocRspCb,
2675 void* pUserData
2676)
2677{
2678 WDI_EventInfoType wdiEventData;
2679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2680
2681 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002682 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002683 ------------------------------------------------------------------------*/
2684 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2685 {
2686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2687 "WDI API call before module is initialized - Fail request");
2688
Jeff Johnsone7245742012-09-05 17:12:55 -07002689 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002690 }
2691
2692 /*------------------------------------------------------------------------
2693 Fill in Event data and post to the Main FSM
2694 ------------------------------------------------------------------------*/
2695 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002696 wdiEventData.pEventData = pwdiPostAssocReqParams;
2697 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2698 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002699 wdiEventData.pUserData = pUserData;
2700
2701 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2702
2703}/*WDI_PostAssocReq*/
2704
2705/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002706 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002707 association with another STA has ended and the station
2708 must be deleted from HW. Upon the call of this API the
2709 WLAN DAL will pack and send a HAL Del STA request
2710 message to the lower RIVA sub-system if DAL is in state
2711 STARTED.
2712
2713 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002714 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002715
2716 WDI_PostAssocReq must have been called.
2717
Jeff Johnsone7245742012-09-05 17:12:55 -07002718 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002719 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002720
Jeff Johnson295189b2012-06-20 16:38:30 -07002721 wdiDelSTARspCb: callback for passing back the response
2722 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002723
Jeff Johnson295189b2012-06-20 16:38:30 -07002724 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002725 callback
2726
Jeff Johnson295189b2012-06-20 16:38:30 -07002727 @see WDI_PostAssocReq
2728 @return Result of the function call
2729*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002730WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002731WDI_DelSTAReq
2732(
2733 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2734 WDI_DelSTARspCb wdiDelSTARspCb,
2735 void* pUserData
2736)
2737{
2738 WDI_EventInfoType wdiEventData;
2739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2740
2741 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002742 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002743 ------------------------------------------------------------------------*/
2744 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2745 {
2746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2747 "WDI API call before module is initialized - Fail request");
2748
Jeff Johnsone7245742012-09-05 17:12:55 -07002749 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002750 }
2751
2752 /*------------------------------------------------------------------------
2753 Fill in Event data and post to the Main FSM
2754 ------------------------------------------------------------------------*/
2755 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 wdiEventData.pEventData = pwdiDelSTAParams;
2757 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2758 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002759 wdiEventData.pUserData = pUserData;
2760
2761 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2762
2763}/*WDI_DelSTAReq*/
2764
Jeff Johnsone7245742012-09-05 17:12:55 -07002765/*========================================================================
2766
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002768
Jeff Johnson295189b2012-06-20 16:38:30 -07002769==========================================================================*/
2770
2771/**
2772 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2773 install a BSS encryption key on the HW. Upon the call of this
2774 API the WLAN DAL will pack and send a Set BSS Key request
2775 message to the lower RIVA sub-system if DAL is in state
2776 STARTED.
2777
2778 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002779 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002780
2781 WDI_PostAssocReq must have been called.
2782
Jeff Johnsone7245742012-09-05 17:12:55 -07002783 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002784 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002785
Jeff Johnson295189b2012-06-20 16:38:30 -07002786 wdiSetBSSKeyRspCb: callback for passing back the
2787 response of the set BSS Key operation received from the
2788 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002789
Jeff Johnson295189b2012-06-20 16:38:30 -07002790 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002791 callback
2792
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 @see WDI_PostAssocReq
2794 @return Result of the function call
2795*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002796WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002797WDI_SetBSSKeyReq
2798(
2799 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2800 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2801 void* pUserData
2802)
2803{
2804 WDI_EventInfoType wdiEventData;
2805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2806
2807 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002808 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002809 ------------------------------------------------------------------------*/
2810 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2811 {
2812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2813 "WDI API call before module is initialized - Fail request");
2814
Jeff Johnsone7245742012-09-05 17:12:55 -07002815 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002816 }
2817
2818 /*------------------------------------------------------------------------
2819 Fill in Event data and post to the Main FSM
2820 ------------------------------------------------------------------------*/
2821 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002822 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2823 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2824 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 wdiEventData.pUserData = pUserData;
2826
2827 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2828
2829}/*WDI_SetBSSKeyReq*/
2830
2831/**
2832 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2833 uninstall a BSS key from HW. Upon the call of this API the
2834 WLAN DAL will pack and send a HAL Remove BSS Key request
2835 message to the lower RIVA sub-system if DAL is in state
2836 STARTED.
2837
2838 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002839 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002840
2841 WDI_SetBSSKeyReq must have been called.
2842
Jeff Johnsone7245742012-09-05 17:12:55 -07002843 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002844 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002845
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 wdiRemoveBSSKeyRspCb: callback for passing back the
2847 response of the remove BSS key operation received from
2848 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002849
Jeff Johnson295189b2012-06-20 16:38:30 -07002850 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002851 callback
2852
Jeff Johnson295189b2012-06-20 16:38:30 -07002853 @see WDI_SetBSSKeyReq
2854 @return Result of the function call
2855*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002856WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002857WDI_RemoveBSSKeyReq
2858(
2859 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2860 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2861 void* pUserData
2862)
2863{
2864 WDI_EventInfoType wdiEventData;
2865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2866
2867 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 ------------------------------------------------------------------------*/
2870 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2871 {
2872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2873 "WDI API call before module is initialized - Fail request");
2874
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002876 }
2877
2878 /*------------------------------------------------------------------------
2879 Fill in Event data and post to the Main FSM
2880 ------------------------------------------------------------------------*/
2881 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002882 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2883 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2884 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002885 wdiEventData.pUserData = pUserData;
2886
2887 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2888
2889}/*WDI_RemoveBSSKeyReq*/
2890
2891
2892/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 ready to install a STA(ast) encryption key in HW. Upon
2895 the call of this API the WLAN DAL will pack and send a
2896 HAL Set STA Key request message to the lower RIVA
2897 sub-system if DAL is in state STARTED.
2898
2899 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002900 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002901
2902 WDI_PostAssocReq must have been called.
2903
Jeff Johnsone7245742012-09-05 17:12:55 -07002904 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002905 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002906
Jeff Johnson295189b2012-06-20 16:38:30 -07002907 wdiSetSTAKeyRspCb: callback for passing back the
2908 response of the set STA key operation received from the
2909 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002910
Jeff Johnson295189b2012-06-20 16:38:30 -07002911 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002912 callback
2913
Jeff Johnson295189b2012-06-20 16:38:30 -07002914 @see WDI_PostAssocReq
2915 @return Result of the function call
2916*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002917WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002918WDI_SetSTAKeyReq
2919(
2920 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2921 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2922 void* pUserData
2923)
2924{
2925 WDI_EventInfoType wdiEventData;
2926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2927
2928 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002930 ------------------------------------------------------------------------*/
2931 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2932 {
2933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2934 "WDI API call before module is initialized - Fail request");
2935
Jeff Johnsone7245742012-09-05 17:12:55 -07002936 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002937 }
2938
2939 /*------------------------------------------------------------------------
2940 Fill in Event data and post to the Main FSM
2941 ------------------------------------------------------------------------*/
2942 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002943 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2944 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2945 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002946 wdiEventData.pUserData = pUserData;
2947
2948 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2949
2950}/*WDI_SetSTAKeyReq*/
2951
2952
2953/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002955 wants to uninstall a previously set STA key in HW. Upon
2956 the call of this API the WLAN DAL will pack and send a
2957 HAL Remove STA Key request message to the lower RIVA
2958 sub-system if DAL is in state STARTED.
2959
2960 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002961 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002962
2963 WDI_SetSTAKeyReq must have been called.
2964
Jeff Johnsone7245742012-09-05 17:12:55 -07002965 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002966 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002967
Jeff Johnson295189b2012-06-20 16:38:30 -07002968 wdiRemoveSTAKeyRspCb: callback for passing back the
2969 response of the remove STA key operation received from
2970 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002971
Jeff Johnson295189b2012-06-20 16:38:30 -07002972 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002973 callback
2974
Jeff Johnson295189b2012-06-20 16:38:30 -07002975 @see WDI_SetSTAKeyReq
2976 @return Result of the function call
2977*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002978WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002979WDI_RemoveSTAKeyReq
2980(
2981 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2982 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2983 void* pUserData
2984)
2985{
2986 WDI_EventInfoType wdiEventData;
2987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2988
2989 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002990 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002991 ------------------------------------------------------------------------*/
2992 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2993 {
2994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2995 "WDI API call before module is initialized - Fail request");
2996
Jeff Johnsone7245742012-09-05 17:12:55 -07002997 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002998 }
2999
3000 /*------------------------------------------------------------------------
3001 Fill in Event data and post to the Main FSM
3002 ------------------------------------------------------------------------*/
3003 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003004 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3005 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3006 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003007 wdiEventData.pUserData = pUserData;
3008
3009 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3010
3011}/*WDI_RemoveSTAKeyReq*/
3012
3013
3014/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003015 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003016 wants to install a STA Bcast encryption key on the HW.
3017 Upon the call of this API the WLAN DAL will pack and
3018 send a HAL Start request message to the lower RIVA
3019 sub-system if DAL is in state STARTED.
3020
3021 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003022 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003023
3024 WDI_PostAssocReq must have been called.
3025
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003027 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003028
Jeff Johnson295189b2012-06-20 16:38:30 -07003029 wdiSetSTABcastKeyRspCb: callback for passing back the
3030 response of the set BSS Key operation received from the
3031 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003032
Jeff Johnson295189b2012-06-20 16:38:30 -07003033 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003034 callback
3035
Jeff Johnson295189b2012-06-20 16:38:30 -07003036 @see WDI_PostAssocReq
3037 @return Result of the function call
3038*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003039WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003040WDI_SetSTABcastKeyReq
3041(
3042 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3043 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3044 void* pUserData
3045)
3046
3047{
3048 WDI_EventInfoType wdiEventData;
3049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3050
3051 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003052 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003053 ------------------------------------------------------------------------*/
3054 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3055 {
3056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3057 "WDI API call before module is initialized - Fail request");
3058
Jeff Johnsone7245742012-09-05 17:12:55 -07003059 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 }
3061
3062 /*------------------------------------------------------------------------
3063 Fill in Event data and post to the Main FSM
3064 ------------------------------------------------------------------------*/
3065 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003066 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3067 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3068 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 wdiEventData.pUserData = pUserData;
3070
3071 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3072
3073}/*WDI_SetSTABcastKeyReq*/
3074
3075/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003077 MAC wants to uninstall a STA Bcast key from HW. Upon the
3078 call of this API the WLAN DAL will pack and send a HAL
3079 Remove STA Bcast Key request message to the lower RIVA
3080 sub-system if DAL is in state STARTED.
3081
3082 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003083 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003084
3085 WDI_SetSTABcastKeyReq must have been called.
3086
Jeff Johnsone7245742012-09-05 17:12:55 -07003087 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 parameters as specified by the Device
3089 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003090
Jeff Johnson295189b2012-06-20 16:38:30 -07003091 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3092 response of the remove STA Bcast key operation received
3093 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003094
Jeff Johnson295189b2012-06-20 16:38:30 -07003095 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003096 callback
3097
Jeff Johnson295189b2012-06-20 16:38:30 -07003098 @see WDI_SetSTABcastKeyReq
3099 @return Result of the function call
3100*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003101WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003102WDI_RemoveSTABcastKeyReq
3103(
3104 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3105 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3106 void* pUserData
3107)
3108{
3109 WDI_EventInfoType wdiEventData;
3110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3111
3112 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003113 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003114 ------------------------------------------------------------------------*/
3115 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3116 {
3117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3118 "WDI API call before module is initialized - Fail request");
3119
Jeff Johnsone7245742012-09-05 17:12:55 -07003120 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003121 }
3122
3123 /*------------------------------------------------------------------------
3124 Fill in Event data and post to the Main FSM
3125 ------------------------------------------------------------------------*/
3126 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003127 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3128 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3129 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 wdiEventData.pUserData = pUserData;
3131
3132 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3133
3134}/*WDI_RemoveSTABcastKeyReq*/
3135
3136/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003137 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003138 MAC wants to set Max Tx Power to HW. Upon the
3139 call of this API the WLAN DAL will pack and send a HAL
3140 Remove STA Bcast Key request message to the lower RIVA
3141 sub-system if DAL is in state STARTED.
3142
3143 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003144 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003145
3146 WDI_SetSTABcastKeyReq must have been called.
3147
Jeff Johnsone7245742012-09-05 17:12:55 -07003148 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 parameters as specified by the Device
3150 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003151
Jeff Johnson295189b2012-06-20 16:38:30 -07003152 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3153 response of the remove STA Bcast key operation received
3154 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003155
Jeff Johnson295189b2012-06-20 16:38:30 -07003156 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003157 callback
3158
Jeff Johnson295189b2012-06-20 16:38:30 -07003159 @see WDI_SetMaxTxPowerReq
3160 @return Result of the function call
3161*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003162WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003163WDI_SetMaxTxPowerReq
3164(
3165 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3166 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3167 void* pUserData
3168)
3169{
3170 WDI_EventInfoType wdiEventData;
3171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3172
3173 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003174 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003175 ------------------------------------------------------------------------*/
3176 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3177 {
3178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3179 "WDI API call before module is initialized - Fail request");
3180
Jeff Johnsone7245742012-09-05 17:12:55 -07003181 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003182 }
3183
3184 /*------------------------------------------------------------------------
3185 Fill in Event data and post to the Main FSM
3186 ------------------------------------------------------------------------*/
3187 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003188 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3189 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3190 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003191 wdiEventData.pUserData = pUserData;
3192
3193 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3194}
3195
schang86c22c42013-03-13 18:41:24 -07003196/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003197 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3198 MAC wants to set Max Tx Power to HW for specific band.
3199
3200 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3201
3202 wdiReqStatusCb: callback for passing back the
3203 response msg from the device
3204
3205 pUserData: user data will be passed back with the
3206 callback
3207
3208 @see WDI_SetMaxTxPowerPerBandReq
3209 @return Result of the function call
3210*/
3211WDI_Status
3212WDI_SetMaxTxPowerPerBandReq
3213(
3214 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3215 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3216 void* pUserData
3217)
3218{
3219 WDI_EventInfoType wdiEventData;
3220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3221
3222 /*------------------------------------------------------------------------
3223 Sanity Check
3224 ------------------------------------------------------------------------*/
3225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3226 {
3227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3228 "WDI API call before module is initialized - Fail request");
3229
3230 return WDI_STATUS_E_NOT_ALLOWED;
3231 }
3232
3233 /*------------------------------------------------------------------------
3234 Fill in Event data and post to the Main FSM
3235 ------------------------------------------------------------------------*/
3236 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3237 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3238 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3239 wdiEventData.pCBfnc = wdiReqStatusCb;
3240 wdiEventData.pUserData = pUserData;
3241
3242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3243}
3244
3245/**
schang86c22c42013-03-13 18:41:24 -07003246 @brief WDI_SetTxPowerReq will be called when the upper
3247 MAC wants to set Tx Power to HW.
3248 In state BUSY this request will be queued. Request won't
3249 be allowed in any other state.
3250
3251
3252 @param pwdiSetTxPowerParams: set TS Power parameters
3253 BSSID and target TX Power with dbm included
3254
3255 wdiReqStatusCb: callback for passing back the response
3256
3257 pUserData: user data will be passed back with the
3258 callback
3259
3260 @return Result of the function call
3261*/
3262WDI_Status
3263WDI_SetTxPowerReq
3264(
3265 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3266 WDA_SetTxPowerRspCb wdiReqStatusCb,
3267 void* pUserData
3268)
3269{
3270 WDI_EventInfoType wdiEventData;
3271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3272
3273 /*------------------------------------------------------------------------
3274 Sanity Check
3275 ------------------------------------------------------------------------*/
3276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3277 {
3278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3279 "WDI API call before module is initialized - Fail request");
3280
3281 return WDI_STATUS_E_NOT_ALLOWED;
3282 }
3283
3284 /*------------------------------------------------------------------------
3285 Fill in Event data and post to the Main FSM
3286 ------------------------------------------------------------------------*/
3287 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3288 wdiEventData.pEventData = pwdiSetTxPowerParams;
3289 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3290 wdiEventData.pCBfnc = wdiReqStatusCb;
3291 wdiEventData.pUserData = pUserData;
3292
3293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3294}
3295
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003296#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003297WDI_Status
3298WDI_TSMStatsReq
3299(
3300 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3301 WDI_TsmRspCb wdiReqStatusCb,
3302 void* pUserData
3303)
3304{
3305 WDI_EventInfoType wdiEventData;
3306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 /*------------------------------------------------------------------------
3308 Sanity Check
3309 ------------------------------------------------------------------------*/
3310 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3311 {
3312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3313 "WDI API call before module is initialized - Fail request");
3314
3315 return WDI_STATUS_E_NOT_ALLOWED;
3316 }
3317
3318 /*------------------------------------------------------------------------
3319 Fill in Event data and post to the Main FSM
3320 ------------------------------------------------------------------------*/
3321 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3322 wdiEventData.pEventData = pwdiTsmReqParams;
3323 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3324 wdiEventData.pCBfnc = wdiReqStatusCb;
3325 wdiEventData.pUserData = pUserData;
3326
3327 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3328
3329}
3330#endif
3331
3332/*========================================================================
3333
3334 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003335
Jeff Johnson295189b2012-06-20 16:38:30 -07003336==========================================================================*/
3337
3338/**
3339 @brief WDI_AddTSReq will be called when the upper MAC to inform
3340 the device of a successful add TSpec negotiation. HW
3341 needs to receive the TSpec Info from the UMAC in order
3342 to configure properly the QoS data traffic. Upon the
3343 call of this API the WLAN DAL will pack and send a HAL
3344 Add TS request message to the lower RIVA sub-system if
3345 DAL is in state STARTED.
3346
3347 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003348 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003349
3350 WDI_PostAssocReq must have been called.
3351
3352 @param wdiAddTsReqParams: the add TS parameters as specified by
3353 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003354
Jeff Johnson295189b2012-06-20 16:38:30 -07003355 wdiAddTsRspCb: callback for passing back the response of
3356 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003357
Jeff Johnson295189b2012-06-20 16:38:30 -07003358 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003359 callback
3360
Jeff Johnson295189b2012-06-20 16:38:30 -07003361 @see WDI_PostAssocReq
3362 @return Result of the function call
3363*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003364WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003365WDI_AddTSReq
3366(
3367 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3368 WDI_AddTsRspCb wdiAddTsRspCb,
3369 void* pUserData
3370)
3371{
3372 WDI_EventInfoType wdiEventData;
3373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3374
3375 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003376 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003377 ------------------------------------------------------------------------*/
3378 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3379 {
3380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3381 "WDI API call before module is initialized - Fail request");
3382
Jeff Johnsone7245742012-09-05 17:12:55 -07003383 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003384 }
3385
3386 /*------------------------------------------------------------------------
3387 Fill in Event data and post to the Main FSM
3388 ------------------------------------------------------------------------*/
3389 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003390 wdiEventData.pEventData = pwdiAddTsReqParams;
3391 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3392 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003393 wdiEventData.pUserData = pUserData;
3394
3395 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3396
3397}/*WDI_AddTSReq*/
3398
3399
3400
3401/**
3402 @brief WDI_DelTSReq will be called when the upper MAC has ended
3403 admission on a specific AC. This is to inform HW that
3404 QoS traffic parameters must be rest. Upon the call of
3405 this API the WLAN DAL will pack and send a HAL Del TS
3406 request message to the lower RIVA sub-system if DAL is
3407 in state STARTED.
3408
3409 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003410 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003411
3412 WDI_AddTSReq must have been called.
3413
3414 @param wdiDelTsReqParams: the del TS parameters as specified by
3415 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003416
Jeff Johnson295189b2012-06-20 16:38:30 -07003417 wdiDelTsRspCb: callback for passing back the response of
3418 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003419
Jeff Johnson295189b2012-06-20 16:38:30 -07003420 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003421 callback
3422
Jeff Johnson295189b2012-06-20 16:38:30 -07003423 @see WDI_AddTSReq
3424 @return Result of the function call
3425*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003426WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003427WDI_DelTSReq
3428(
3429 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3430 WDI_DelTsRspCb wdiDelTsRspCb,
3431 void* pUserData
3432)
3433{
3434 WDI_EventInfoType wdiEventData;
3435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3436
3437 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003438 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003439 ------------------------------------------------------------------------*/
3440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3441 {
3442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3443 "WDI API call before module is initialized - Fail request");
3444
Jeff Johnsone7245742012-09-05 17:12:55 -07003445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003446 }
3447
3448 /*------------------------------------------------------------------------
3449 Fill in Event data and post to the Main FSM
3450 ------------------------------------------------------------------------*/
3451 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003452 wdiEventData.pEventData = pwdiDelTsReqParams;
3453 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3454 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003455 wdiEventData.pUserData = pUserData;
3456
3457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3458
3459}/*WDI_DelTSReq*/
3460
3461
3462
3463/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003464 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 wishes to update the EDCA parameters used by HW for QoS
3466 data traffic. Upon the call of this API the WLAN DAL
3467 will pack and send a HAL Update EDCA Params request
3468 message to the lower RIVA sub-system if DAL is in state
3469 STARTED.
3470
3471 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003472 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003473
3474 WDI_PostAssocReq must have been called.
3475
Jeff Johnsone7245742012-09-05 17:12:55 -07003476 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003477 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003478
Jeff Johnson295189b2012-06-20 16:38:30 -07003479 wdiUpdateEDCAParamsRspCb: callback for passing back the
3480 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003481
Jeff Johnson295189b2012-06-20 16:38:30 -07003482 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003483 callback
3484
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 @see WDI_PostAssocReq
3486 @return Result of the function call
3487*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003488WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003489WDI_UpdateEDCAParams
3490(
3491 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3492 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3493 void* pUserData
3494)
3495{
3496 WDI_EventInfoType wdiEventData;
3497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3498
3499 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003500 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 ------------------------------------------------------------------------*/
3502 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3503 {
3504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3505 "WDI API call before module is initialized - Fail request");
3506
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 }
3509
3510 /*------------------------------------------------------------------------
3511 Fill in Event data and post to the Main FSM
3512 ------------------------------------------------------------------------*/
3513 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003514 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3515 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3516 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003517 wdiEventData.pUserData = pUserData;
3518
3519 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3520
3521}/*WDI_UpdateEDCAParams*/
3522
3523
3524/**
3525 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3526 successfully a BA session and needs to notify the HW for
3527 the appropriate settings to take place. Upon the call of
3528 this API the WLAN DAL will pack and send a HAL Add BA
3529 request message to the lower RIVA sub-system if DAL is
3530 in state STARTED.
3531
3532 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003533 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003534
3535 WDI_PostAssocReq must have been called.
3536
3537 @param wdiAddBAReqParams: the add BA parameters as specified by
3538 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003539
Jeff Johnson295189b2012-06-20 16:38:30 -07003540 wdiAddBARspCb: callback for passing back the response of
3541 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003542
Jeff Johnson295189b2012-06-20 16:38:30 -07003543 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003544 callback
3545
Jeff Johnson295189b2012-06-20 16:38:30 -07003546 @see WDI_PostAssocReq
3547 @return Result of the function call
3548*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003549WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003550WDI_AddBASessionReq
3551(
3552 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3553 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3554 void* pUserData
3555)
3556{
3557 WDI_EventInfoType wdiEventData;
3558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3559
3560 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003561 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003562 ------------------------------------------------------------------------*/
3563 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3564 {
3565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3566 "WDI API call before module is initialized - Fail request");
3567
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003569 }
3570
3571 /*------------------------------------------------------------------------
3572 Fill in Event data and post to the Main FSM
3573 ------------------------------------------------------------------------*/
3574 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003575 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3576 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3577 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 wdiEventData.pUserData = pUserData;
3579
3580 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3581
3582}/*WDI_AddBASessionReq*/
3583
3584/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003585 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 inform HW that it has deleted a previously created BA
3587 session. Upon the call of this API the WLAN DAL will
3588 pack and send a HAL Del BA request message to the lower
3589 RIVA sub-system if DAL is in state STARTED.
3590
3591 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003592 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003593
3594 WDI_AddBAReq must have been called.
3595
3596 @param wdiDelBAReqParams: the del BA parameters as specified by
3597 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003598
Jeff Johnson295189b2012-06-20 16:38:30 -07003599 wdiDelBARspCb: callback for passing back the response of
3600 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003601
Jeff Johnson295189b2012-06-20 16:38:30 -07003602 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 callback
3604
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 @see WDI_AddBAReq
3606 @return Result of the function call
3607*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003608WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003609WDI_DelBAReq
3610(
3611 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3612 WDI_DelBARspCb wdiDelBARspCb,
3613 void* pUserData
3614)
3615{
3616 WDI_EventInfoType wdiEventData;
3617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3618
3619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003620 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 ------------------------------------------------------------------------*/
3622 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3623 {
3624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3625 "WDI API call before module is initialized - Fail request");
3626
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 }
3629
3630 /*------------------------------------------------------------------------
3631 Fill in Event data and post to the Main FSM
3632 ------------------------------------------------------------------------*/
3633 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003634 wdiEventData.pEventData = pwdiDelBAReqParams;
3635 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3636 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 wdiEventData.pUserData = pUserData;
3638
3639 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3640
3641}/*WDI_DelBAReq*/
3642
Jeff Johnsone7245742012-09-05 17:12:55 -07003643/*========================================================================
3644
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003646
Jeff Johnson295189b2012-06-20 16:38:30 -07003647==========================================================================*/
3648
3649/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003650 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 wants to set the power save related configurations of
3652 the WLAN Device. Upon the call of this API the WLAN DAL
3653 will pack and send a HAL Update CFG request message to
3654 the lower RIVA sub-system if DAL is in state STARTED.
3655
3656 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003657 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003658
3659 WDI_Start must have been called.
3660
Jeff Johnsone7245742012-09-05 17:12:55 -07003661 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003662 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003663
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 wdiSetPwrSaveCfgCb: callback for passing back the
3665 response of the set power save cfg operation received
3666 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003667
Jeff Johnson295189b2012-06-20 16:38:30 -07003668 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003669 callback
3670
Jeff Johnson295189b2012-06-20 16:38:30 -07003671 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 @return Result of the function call
3673*/
3674WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003675WDI_SetPwrSaveCfgReq
3676(
3677 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3678 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3679 void* pUserData
3680)
3681{
3682 WDI_EventInfoType wdiEventData;
3683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3684
3685 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003686 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003687 ------------------------------------------------------------------------*/
3688 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3689 {
3690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3691 "WDI API call before module is initialized - Fail request");
3692
Jeff Johnsone7245742012-09-05 17:12:55 -07003693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003694 }
3695
3696 /*------------------------------------------------------------------------
3697 Fill in Event data and post to the Main FSM
3698 ------------------------------------------------------------------------*/
3699 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 wdiEventData.pEventData = pwdiPowerSaveCfg;
3701 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3702 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 wdiEventData.pUserData = pUserData;
3704
3705 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3706
3707}/*WDI_SetPwrSaveCfgReq*/
3708
3709/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003711 request the device to get into IMPS power state. Upon
3712 the call of this API the WLAN DAL will send a HAL Enter
3713 IMPS request message to the lower RIVA sub-system if DAL
3714 is in state STARTED.
3715
3716 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003718
Jeff Johnsone7245742012-09-05 17:12:55 -07003719
3720 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 response of the Enter IMPS operation received from the
3722 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003725 callback
3726
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 @see WDI_Start
3728 @return Result of the function call
3729*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003730WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003731WDI_EnterImpsReq
3732(
Mihir Shetea4306052014-03-25 00:02:54 +05303733 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003734 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3735 void* pUserData
3736)
3737{
3738 WDI_EventInfoType wdiEventData;
3739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3740
3741 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003742 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003743 ------------------------------------------------------------------------*/
3744 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3745 {
3746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3747 "WDI API call before module is initialized - Fail request");
3748
Jeff Johnsone7245742012-09-05 17:12:55 -07003749 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003750 }
3751
3752 /*------------------------------------------------------------------------
3753 Fill in Event data and post to the Main FSM
3754 ------------------------------------------------------------------------*/
3755 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303756 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3757 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 wdiEventData.pUserData = pUserData;
3760
3761 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3762
3763}/*WDI_EnterImpsReq*/
3764
3765/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 request the device to get out of IMPS power state. Upon
3768 the call of this API the WLAN DAL will send a HAL Exit
3769 IMPS request message to the lower RIVA sub-system if DAL
3770 is in state STARTED.
3771
3772 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003774
Jeff Johnson295189b2012-06-20 16:38:30 -07003775
Jeff Johnsone7245742012-09-05 17:12:55 -07003776
3777 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003779
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003781 callback
3782
Jeff Johnson295189b2012-06-20 16:38:30 -07003783 @see WDI_Start
3784 @return Result of the function call
3785*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003786WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003787WDI_ExitImpsReq
3788(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303789 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3791 void* pUserData
3792)
3793{
3794 WDI_EventInfoType wdiEventData;
3795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3796
3797 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003798 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003799 ------------------------------------------------------------------------*/
3800 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3801 {
3802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3803 "WDI API call before module is initialized - Fail request");
3804
Jeff Johnsone7245742012-09-05 17:12:55 -07003805 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003806 }
3807
3808 /*------------------------------------------------------------------------
3809 Fill in Event data and post to the Main FSM
3810 ------------------------------------------------------------------------*/
3811 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303812 wdiEventData.pEventData = pwdiExitImpsReqParams;
3813 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003814 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003815 wdiEventData.pUserData = pUserData;
3816
3817 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3818
3819}/*WDI_ExitImpsReq*/
3820
3821/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003822 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003823 request the device to get into BMPS power state. Upon
3824 the call of this API the WLAN DAL will pack and send a
3825 HAL Enter BMPS request message to the lower RIVA
3826 sub-system if DAL is in state STARTED.
3827
3828 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003829 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003830
3831 WDI_PostAssocReq must have been called.
3832
Jeff Johnsone7245742012-09-05 17:12:55 -07003833 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003834 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003835
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 wdiEnterBmpsRspCb: callback for passing back the
3837 response of the Enter BMPS operation received from the
3838 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003839
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003841 callback
3842
Jeff Johnson295189b2012-06-20 16:38:30 -07003843 @see WDI_PostAssocReq
3844 @return Result of the function call
3845*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003846WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003847WDI_EnterBmpsReq
3848(
3849 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3850 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3851 void* pUserData
3852)
3853{
3854 WDI_EventInfoType wdiEventData;
3855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3856
3857 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 ------------------------------------------------------------------------*/
3860 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3861 {
3862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3863 "WDI API call before module is initialized - Fail request");
3864
Jeff Johnsone7245742012-09-05 17:12:55 -07003865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003866 }
3867
3868 /*------------------------------------------------------------------------
3869 Fill in Event data and post to the Main FSM
3870 ------------------------------------------------------------------------*/
3871 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003872 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3873 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3874 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003875 wdiEventData.pUserData = pUserData;
3876
3877 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3878
3879}/*WDI_EnterBmpsReq*/
3880
3881/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003882 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003883 request the device to get out of BMPS power state. Upon
3884 the call of this API the WLAN DAL will pack and send a
3885 HAL Exit BMPS request message to the lower RIVA
3886 sub-system if DAL is in state STARTED.
3887
3888 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003889 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003890
3891 WDI_PostAssocReq must have been called.
3892
Jeff Johnsone7245742012-09-05 17:12:55 -07003893 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003894 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003895
Jeff Johnson295189b2012-06-20 16:38:30 -07003896 wdiExitBmpsRspCb: callback for passing back the response
3897 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003898
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003900 callback
3901
Jeff Johnson295189b2012-06-20 16:38:30 -07003902 @see WDI_PostAssocReq
3903 @return Result of the function call
3904*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003905WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003906WDI_ExitBmpsReq
3907(
3908 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3909 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3910 void* pUserData
3911)
3912{
3913 WDI_EventInfoType wdiEventData;
3914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3915
3916 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 ------------------------------------------------------------------------*/
3919 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3920 {
3921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3922 "WDI API call before module is initialized - Fail request");
3923
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 }
3926
3927 /*------------------------------------------------------------------------
3928 Fill in Event data and post to the Main FSM
3929 ------------------------------------------------------------------------*/
3930 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3932 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3933 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 wdiEventData.pUserData = pUserData;
3935
3936 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3937
3938}/*WDI_ExitBmpsReq*/
3939
3940/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003941 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003942 request the device to get into UAPSD power state. Upon
3943 the call of this API the WLAN DAL will pack and send a
3944 HAL Enter UAPSD request message to the lower RIVA
3945 sub-system if DAL is in state STARTED.
3946
3947 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003948 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003949
3950 WDI_PostAssocReq must have been called.
3951 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003952
3953 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003954 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003955
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 wdiEnterUapsdRspCb: callback for passing back the
3957 response of the Enter UAPSD operation received from the
3958 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003959
Jeff Johnson295189b2012-06-20 16:38:30 -07003960 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003961 callback
3962
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3964 @return Result of the function call
3965*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003966WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003967WDI_EnterUapsdReq
3968(
3969 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3970 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3971 void* pUserData
3972)
3973{
3974 WDI_EventInfoType wdiEventData;
3975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3976
3977 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003978 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003979 ------------------------------------------------------------------------*/
3980 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3981 {
3982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3983 "WDI API call before module is initialized - Fail request");
3984
Jeff Johnsone7245742012-09-05 17:12:55 -07003985 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003986 }
3987
3988 /*------------------------------------------------------------------------
3989 Fill in Event data and post to the Main FSM
3990 ------------------------------------------------------------------------*/
3991 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3993 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3994 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003995 wdiEventData.pUserData = pUserData;
3996
3997 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3998
3999}/*WDI_EnterUapsdReq*/
4000
4001/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004002 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 request the device to get out of UAPSD power state. Upon
4004 the call of this API the WLAN DAL will send a HAL Exit
4005 UAPSD request message to the lower RIVA sub-system if
4006 DAL is in state STARTED.
4007
4008 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004009 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004010
4011 WDI_PostAssocReq must have been called.
4012
Jeff Johnsone7245742012-09-05 17:12:55 -07004013 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 response of the Exit UAPSD operation received from the
4015 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004016
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004018 callback
4019
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 @see WDI_PostAssocReq
4021 @return Result of the function call
4022*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004023WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004024WDI_ExitUapsdReq
4025(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004026 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4028 void* pUserData
4029)
4030{
4031 WDI_EventInfoType wdiEventData;
4032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4033
4034 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 ------------------------------------------------------------------------*/
4037 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4038 {
4039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4040 "WDI API call before module is initialized - Fail request");
4041
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 }
4044
4045 /*------------------------------------------------------------------------
4046 Fill in Event data and post to the Main FSM
4047 ------------------------------------------------------------------------*/
4048 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004049 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4050 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 wdiEventData.pUserData = pUserData;
4053
4054 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4055
4056}/*WDI_ExitUapsdReq*/
4057
4058/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004060 MAC wants to set the UAPSD related configurations
4061 of an associated STA (while acting as an AP) to the WLAN
4062 Device. Upon the call of this API the WLAN DAL will pack
4063 and send a HAL Update UAPSD params request message to
4064 the lower RIVA sub-system if DAL is in state STARTED.
4065
4066 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004067 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004068
4069 WDI_ConfigBSSReq must have been called.
4070
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004072 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004073
Jeff Johnson295189b2012-06-20 16:38:30 -07004074 wdiUpdateUapsdParamsCb: callback for passing back the
4075 response of the update UAPSD params operation received
4076 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004077
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004079 callback
4080
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 @see WDI_ConfigBSSReq
4082 @return Result of the function call
4083*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004084WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004085WDI_UpdateUapsdParamsReq
4086(
4087 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4088 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4089 void* pUserData
4090)
4091{
4092 WDI_EventInfoType wdiEventData;
4093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4094
4095 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004096 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004097 ------------------------------------------------------------------------*/
4098 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4099 {
4100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4101 "WDI API call before module is initialized - Fail request");
4102
Jeff Johnsone7245742012-09-05 17:12:55 -07004103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004104 }
4105
4106 /*------------------------------------------------------------------------
4107 Fill in Event data and post to the Main FSM
4108 ------------------------------------------------------------------------*/
4109 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004111 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 wdiEventData.pUserData = pUserData;
4114
4115 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4116
4117}/*WDI_UpdateUapsdParamsReq*/
4118
4119/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004120 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004121 MAC wants to set the UAPSD related configurations before
4122 requesting for enter UAPSD power state to the WLAN
4123 Device. Upon the call of this API the WLAN DAL will pack
4124 and send a HAL Set UAPSD params request message to
4125 the lower RIVA sub-system if DAL is in state STARTED.
4126
4127 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004128 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004129
4130 WDI_PostAssocReq must have been called.
4131
4132 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4133 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004134
Jeff Johnson295189b2012-06-20 16:38:30 -07004135 wdiSetUapsdAcParamsCb: callback for passing back the
4136 response of the set UAPSD params operation received from
4137 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004138
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004140 callback
4141
Jeff Johnson295189b2012-06-20 16:38:30 -07004142 @see WDI_PostAssocReq
4143 @return Result of the function call
4144*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004146WDI_SetUapsdAcParamsReq
4147(
4148 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4149 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4150 void* pUserData
4151)
4152{
4153 WDI_EventInfoType wdiEventData;
4154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4155
4156 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004157 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004158 ------------------------------------------------------------------------*/
4159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4160 {
4161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4162 "WDI API call before module is initialized - Fail request");
4163
Jeff Johnsone7245742012-09-05 17:12:55 -07004164 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004165 }
4166
4167 /*------------------------------------------------------------------------
4168 Fill in Event data and post to the Main FSM
4169 ------------------------------------------------------------------------*/
4170 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004171 wdiEventData.pEventData = pwdiUapsdInfo;
4172 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4173 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 wdiEventData.pUserData = pUserData;
4175
4176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4177
4178}/*WDI_SetUapsdAcParamsReq*/
4179
4180/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004182 MAC wants to set/reset the RXP filters for received pkts
4183 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4184 and send a HAL configure RXP filter request message to
4185 the lower RIVA sub-system.
4186
4187 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004188 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004189
Jeff Johnsone7245742012-09-05 17:12:55 -07004190
4191 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 filter as specified by the Device
4193 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004194
Jeff Johnson295189b2012-06-20 16:38:30 -07004195 wdiConfigureRxpFilterCb: callback for passing back the
4196 response of the configure RXP filter operation received
4197 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004198
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004200 callback
4201
Jeff Johnson295189b2012-06-20 16:38:30 -07004202 @return Result of the function call
4203*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004204WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004205WDI_ConfigureRxpFilterReq
4206(
4207 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4208 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4209 void* pUserData
4210)
4211{
4212 WDI_EventInfoType wdiEventData;
4213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4214
4215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 ------------------------------------------------------------------------*/
4218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4219 {
4220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4221 "WDI API call before module is initialized - Fail request");
4222
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 }
4225
4226 /*------------------------------------------------------------------------
4227 Fill in Event data and post to the Main FSM
4228 ------------------------------------------------------------------------*/
4229 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4231 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4232 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 wdiEventData.pUserData = pUserData;
4234
4235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4236}/*WDI_ConfigureRxpFilterReq*/
4237
4238/**
4239 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4240 wants to set the beacon filters while in power save.
4241 Upon the call of this API the WLAN DAL will pack and
4242 send a Beacon filter request message to the
4243 lower RIVA sub-system.
4244
4245 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004246 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004247
Jeff Johnsone7245742012-09-05 17:12:55 -07004248
4249 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 filter as specified by the Device
4251 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004252
Jeff Johnson295189b2012-06-20 16:38:30 -07004253 wdiBeaconFilterCb: callback for passing back the
4254 response of the set beacon filter operation received
4255 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004256
Jeff Johnson295189b2012-06-20 16:38:30 -07004257 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004258 callback
4259
Jeff Johnson295189b2012-06-20 16:38:30 -07004260 @return Result of the function call
4261*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004262WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004263WDI_SetBeaconFilterReq
4264(
4265 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4266 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4267 void* pUserData
4268)
4269{
4270 WDI_EventInfoType wdiEventData;
4271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4272
4273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 ------------------------------------------------------------------------*/
4276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4277 {
4278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4279 "WDI API call before module is initialized - Fail request");
4280
Jeff Johnsone7245742012-09-05 17:12:55 -07004281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004282 }
4283
4284 /*------------------------------------------------------------------------
4285 Fill in Event data and post to the Main FSM
4286 ------------------------------------------------------------------------*/
4287 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004288 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004289 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004290 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004291 wdiEventData.pUserData = pUserData;
4292
4293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4294}/*WDI_SetBeaconFilterReq*/
4295
4296/**
4297 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4298 wants to remove the beacon filter for particular IE
4299 while in power save. Upon the call of this API the WLAN
4300 DAL will pack and send a remove Beacon filter request
4301 message to the lower RIVA sub-system.
4302
4303 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004304 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004305
Jeff Johnsone7245742012-09-05 17:12:55 -07004306
4307 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004308 filter as specified by the Device
4309 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004310
Jeff Johnson295189b2012-06-20 16:38:30 -07004311 wdiBeaconFilterCb: callback for passing back the
4312 response of the remove beacon filter operation received
4313 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004314
Jeff Johnson295189b2012-06-20 16:38:30 -07004315 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004316 callback
4317
Jeff Johnson295189b2012-06-20 16:38:30 -07004318 @return Result of the function call
4319*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004320WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004321WDI_RemBeaconFilterReq
4322(
4323 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4324 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4325 void* pUserData
4326)
4327{
4328 WDI_EventInfoType wdiEventData;
4329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4330
4331 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004332 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004333 ------------------------------------------------------------------------*/
4334 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4335 {
4336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4337 "WDI API call before module is initialized - Fail request");
4338
Jeff Johnsone7245742012-09-05 17:12:55 -07004339 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004340 }
4341
4342 /*------------------------------------------------------------------------
4343 Fill in Event data and post to the Main FSM
4344 ------------------------------------------------------------------------*/
4345 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004346 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004347 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004348 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004349 wdiEventData.pUserData = pUserData;
4350
4351 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4352}/*WDI_RemBeaconFilterReq*/
4353
4354/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004355 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004356 MAC wants to set the RSSI thresholds related
4357 configurations while in power save. Upon the call of
4358 this API the WLAN DAL will pack and send a HAL Set RSSI
4359 thresholds request message to the lower RIVA
4360 sub-system if DAL is in state STARTED.
4361
4362 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004363 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004364
4365 WDI_PostAssocReq must have been called.
4366
4367 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4368 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004369
Jeff Johnson295189b2012-06-20 16:38:30 -07004370 wdiSetUapsdAcParamsCb: callback for passing back the
4371 response of the set UAPSD params operation received from
4372 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004373
Jeff Johnson295189b2012-06-20 16:38:30 -07004374 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004375 callback
4376
Jeff Johnson295189b2012-06-20 16:38:30 -07004377 @see WDI_PostAssocReq
4378 @return Result of the function call
4379*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004380WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004381WDI_SetRSSIThresholdsReq
4382(
4383 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4384 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4385 void* pUserData
4386)
4387{
4388 WDI_EventInfoType wdiEventData;
4389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4390
4391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004393 ------------------------------------------------------------------------*/
4394 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4395 {
4396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4397 "WDI API call before module is initialized - Fail request");
4398
Jeff Johnsone7245742012-09-05 17:12:55 -07004399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004400 }
4401
4402 /*------------------------------------------------------------------------
4403 Fill in Event data and post to the Main FSM
4404 ------------------------------------------------------------------------*/
4405 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004406 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004407 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004408 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004409 wdiEventData.pUserData = pUserData;
4410
4411 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4412}/* WDI_SetRSSIThresholdsReq*/
4413
4414/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004415 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004416 wants to set the filter to minimize unnecessary host
4417 wakeup due to broadcast traffic while in power save.
4418 Upon the call of this API the WLAN DAL will pack and
4419 send a HAL host offload request message to the
4420 lower RIVA sub-system if DAL is in state STARTED.
4421
4422 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004423 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004424
4425 WDI_PostAssocReq must have been called.
4426
Jeff Johnsone7245742012-09-05 17:12:55 -07004427 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004428 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004429
Jeff Johnson295189b2012-06-20 16:38:30 -07004430 wdiHostOffloadCb: callback for passing back the response
4431 of the host offload operation received from the
4432 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004433
Jeff Johnson295189b2012-06-20 16:38:30 -07004434 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004435 callback
4436
Jeff Johnson295189b2012-06-20 16:38:30 -07004437 @see WDI_PostAssocReq
4438 @return Result of the function call
4439*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004440WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004441WDI_HostOffloadReq
4442(
4443 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4444 WDI_HostOffloadCb wdiHostOffloadCb,
4445 void* pUserData
4446)
4447{
4448 WDI_EventInfoType wdiEventData;
4449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4450
4451 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004453 ------------------------------------------------------------------------*/
4454 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4455 {
4456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4457 "WDI API call before module is initialized - Fail request");
4458
Jeff Johnsone7245742012-09-05 17:12:55 -07004459 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004460 }
4461
4462 /*------------------------------------------------------------------------
4463 Fill in Event data and post to the Main FSM
4464 ------------------------------------------------------------------------*/
4465 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004466 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004467 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004468 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004469 wdiEventData.pUserData = pUserData;
4470
4471 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4472}/*WDI_HostOffloadReq*/
4473
4474/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004475 @brief WDI_KeepAliveReq will be called when the upper MAC
4476 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004477 and minimize unnecessary host wakeups due to while in power save.
4478 Upon the call of this API the WLAN DAL will pack and
4479 send a HAL Keep Alive request message to the
4480 lower RIVA sub-system if DAL is in state STARTED.
4481
4482 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004483 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004484
4485 WDI_PostAssocReq must have been called.
4486
Jeff Johnsone7245742012-09-05 17:12:55 -07004487 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004489
Jeff Johnson295189b2012-06-20 16:38:30 -07004490 wdiKeepAliveCb: callback for passing back the response
4491 of the Keep Alive operation received from the
4492 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004493
Jeff Johnson295189b2012-06-20 16:38:30 -07004494 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004495 callback
4496
Jeff Johnson295189b2012-06-20 16:38:30 -07004497 @see WDI_PostAssocReq
4498 @return Result of the function call
4499*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004500WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004501WDI_KeepAliveReq
4502(
4503 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4504 WDI_KeepAliveCb wdiKeepAliveCb,
4505 void* pUserData
4506)
4507{
4508 WDI_EventInfoType wdiEventData;
4509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4510
4511 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004512 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004513 ------------------------------------------------------------------------*/
4514 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4515 {
4516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4517 "WDI_KeepAliveReq: WDI API call before module "
4518 "is initialized - Fail request");
4519
Jeff Johnsone7245742012-09-05 17:12:55 -07004520 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 }
4522
4523 /*------------------------------------------------------------------------
4524 Fill in Event data and post to the Main FSM
4525 ------------------------------------------------------------------------*/
4526 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004527 wdiEventData.pEventData = pwdiKeepAliveParams;
4528 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4529 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004530 wdiEventData.pUserData = pUserData;
4531
4532 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4533}/*WDI_KeepAliveReq*/
4534
4535/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004537 wants to set the Wowl Bcast ptrn to minimize unnecessary
4538 host wakeup due to broadcast traffic while in power
4539 save. Upon the call of this API the WLAN DAL will pack
4540 and send a HAL Wowl Bcast ptrn request message to the
4541 lower RIVA sub-system if DAL is in state STARTED.
4542
4543 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004544 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004545
4546 WDI_PostAssocReq must have been called.
4547
Jeff Johnsone7245742012-09-05 17:12:55 -07004548 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004549 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004550
Jeff Johnson295189b2012-06-20 16:38:30 -07004551 wdiWowlAddBcPtrnCb: callback for passing back the
4552 response of the add Wowl bcast ptrn operation received
4553 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004554
Jeff Johnson295189b2012-06-20 16:38:30 -07004555 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004556 callback
4557
Jeff Johnson295189b2012-06-20 16:38:30 -07004558 @see WDI_PostAssocReq
4559 @return Result of the function call
4560*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004561WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004562WDI_WowlAddBcPtrnReq
4563(
4564 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4565 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4566 void* pUserData
4567)
4568{
4569 WDI_EventInfoType wdiEventData;
4570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4571
4572 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004574 ------------------------------------------------------------------------*/
4575 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4576 {
4577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4578 "WDI API call before module is initialized - Fail request");
4579
Jeff Johnsone7245742012-09-05 17:12:55 -07004580 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 }
4582
4583 /*------------------------------------------------------------------------
4584 Fill in Event data and post to the Main FSM
4585 ------------------------------------------------------------------------*/
4586 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004587 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004588 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004589 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004590 wdiEventData.pUserData = pUserData;
4591
4592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4593}/*WDI_WowlAddBcPtrnReq*/
4594
4595/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 wants to clear the Wowl Bcast ptrn. Upon the call of
4598 this API the WLAN DAL will pack and send a HAL delete
4599 Wowl Bcast ptrn request message to the lower RIVA
4600 sub-system if DAL is in state STARTED.
4601
4602 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004604
4605 WDI_WowlAddBcPtrnReq must have been called.
4606
Jeff Johnsone7245742012-09-05 17:12:55 -07004607 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004608 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004609
Jeff Johnson295189b2012-06-20 16:38:30 -07004610 wdiWowlDelBcPtrnCb: callback for passing back the
4611 response of the del Wowl bcast ptrn operation received
4612 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004613
Jeff Johnson295189b2012-06-20 16:38:30 -07004614 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004615 callback
4616
Jeff Johnson295189b2012-06-20 16:38:30 -07004617 @see WDI_WowlAddBcPtrnReq
4618 @return Result of the function call
4619*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004620WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004621WDI_WowlDelBcPtrnReq
4622(
4623 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4624 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4625 void* pUserData
4626)
4627{
4628 WDI_EventInfoType wdiEventData;
4629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4630
4631 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004632 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004633 ------------------------------------------------------------------------*/
4634 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4635 {
4636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4637 "WDI API call before module is initialized - Fail request");
4638
Jeff Johnsone7245742012-09-05 17:12:55 -07004639 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004640 }
4641
4642 /*------------------------------------------------------------------------
4643 Fill in Event data and post to the Main FSM
4644 ------------------------------------------------------------------------*/
4645 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004646 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004647 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004648 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004649 wdiEventData.pUserData = pUserData;
4650
4651 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4652}/*WDI_WowlDelBcPtrnReq*/
4653
4654/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004655 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004656 wants to enter the Wowl state to minimize unnecessary
4657 host wakeup while in power save. Upon the call of this
4658 API the WLAN DAL will pack and send a HAL Wowl enter
4659 request message to the lower RIVA sub-system if DAL is
4660 in state STARTED.
4661
4662 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004664
4665 WDI_PostAssocReq must have been called.
4666
Jeff Johnsone7245742012-09-05 17:12:55 -07004667 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004669
Jeff Johnson295189b2012-06-20 16:38:30 -07004670 wdiWowlEnterReqCb: callback for passing back the
4671 response of the enter Wowl operation received from the
4672 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004673
Jeff Johnson295189b2012-06-20 16:38:30 -07004674 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004675 callback
4676
Jeff Johnson295189b2012-06-20 16:38:30 -07004677 @see WDI_PostAssocReq
4678 @return Result of the function call
4679*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004680WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004681WDI_WowlEnterReq
4682(
4683 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4684 WDI_WowlEnterReqCb wdiWowlEnterCb,
4685 void* pUserData
4686)
4687{
4688 WDI_EventInfoType wdiEventData;
4689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4690
4691 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004692 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004693 ------------------------------------------------------------------------*/
4694 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4695 {
4696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4697 "WDI API call before module is initialized - Fail request");
4698
Jeff Johnsone7245742012-09-05 17:12:55 -07004699 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004700 }
4701
4702 /*------------------------------------------------------------------------
4703 Fill in Event data and post to the Main FSM
4704 ------------------------------------------------------------------------*/
4705 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004706 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004707 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004708 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004709 wdiEventData.pUserData = pUserData;
4710
4711 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4712}/*WDI_WowlEnterReq*/
4713
4714/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004715 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004716 wants to exit the Wowl state. Upon the call of this API
4717 the WLAN DAL will pack and send a HAL Wowl exit request
4718 message to the lower RIVA sub-system if DAL is in state
4719 STARTED.
4720
4721 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004722 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004723
4724 WDI_WowlEnterReq must have been called.
4725
Jeff Johnsone7245742012-09-05 17:12:55 -07004726 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004727 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004728
Jeff Johnson295189b2012-06-20 16:38:30 -07004729 wdiWowlExitReqCb: callback for passing back the response
4730 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004731
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004733 callback
4734
Jeff Johnson295189b2012-06-20 16:38:30 -07004735 @see WDI_WowlEnterReq
4736 @return Result of the function call
4737*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004738WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004739WDI_WowlExitReq
4740(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004741 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004742 WDI_WowlExitReqCb wdiWowlExitCb,
4743 void* pUserData
4744)
4745{
4746 WDI_EventInfoType wdiEventData;
4747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4748
4749 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004750 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004751 ------------------------------------------------------------------------*/
4752 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4753 {
4754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4755 "WDI API call before module is initialized - Fail request");
4756
Jeff Johnsone7245742012-09-05 17:12:55 -07004757 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004758 }
4759
4760 /*------------------------------------------------------------------------
4761 Fill in Event data and post to the Main FSM
4762 ------------------------------------------------------------------------*/
4763 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004764 wdiEventData.pEventData = pwdiWowlExitParams;
4765 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004766 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 wdiEventData.pUserData = pUserData;
4768
4769 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4770}/*WDI_WowlExitReq*/
4771
4772/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004773 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004774 the upper MAC wants to dynamically adjusts the listen
4775 interval based on the WLAN/MSM activity. Upon the call
4776 of this API the WLAN DAL will pack and send a HAL
4777 configure Apps Cpu Wakeup State request message to the
4778 lower RIVA sub-system.
4779
4780 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004781 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004782
Jeff Johnsone7245742012-09-05 17:12:55 -07004783
4784 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 Apps Cpu Wakeup State as specified by the
4786 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004787
Jeff Johnson295189b2012-06-20 16:38:30 -07004788 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4789 back the response of the configure Apps Cpu Wakeup State
4790 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004791
Jeff Johnson295189b2012-06-20 16:38:30 -07004792 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004793 callback
4794
Jeff Johnson295189b2012-06-20 16:38:30 -07004795 @return Result of the function call
4796*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004797WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004798WDI_ConfigureAppsCpuWakeupStateReq
4799(
4800 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4801 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4802 void* pUserData
4803)
4804{
4805 WDI_EventInfoType wdiEventData;
4806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4807
4808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004809 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 ------------------------------------------------------------------------*/
4811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4812 {
4813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4814 "WDI API call before module is initialized - Fail request");
4815
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 }
4818
4819 /*------------------------------------------------------------------------
4820 Fill in Event data and post to the Main FSM
4821 ------------------------------------------------------------------------*/
4822 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004823 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4824 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4825 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 wdiEventData.pUserData = pUserData;
4827
4828 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4829}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4830/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 to to perform a flush operation on a given AC. Upon the
4833 call of this API the WLAN DAL will pack and send a HAL
4834 Flush AC request message to the lower RIVA sub-system if
4835 DAL is in state STARTED.
4836
4837 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004839
4840 WDI_AddBAReq must have been called.
4841
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004844
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 wdiFlushAcRspCb: callback for passing back the response
4846 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004847
Jeff Johnson295189b2012-06-20 16:38:30 -07004848 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004849 callback
4850
Jeff Johnson295189b2012-06-20 16:38:30 -07004851 @see WDI_AddBAReq
4852 @return Result of the function call
4853*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004854WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004855WDI_FlushAcReq
4856(
4857 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4858 WDI_FlushAcRspCb wdiFlushAcRspCb,
4859 void* pUserData
4860)
4861{
4862 WDI_EventInfoType wdiEventData;
4863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4864
4865 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004866 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004867 ------------------------------------------------------------------------*/
4868 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4869 {
4870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4871 "WDI API call before module is initialized - Fail request");
4872
Jeff Johnsone7245742012-09-05 17:12:55 -07004873 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004874 }
4875
4876 /*------------------------------------------------------------------------
4877 Fill in Event data and post to the Main FSM
4878 ------------------------------------------------------------------------*/
4879 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004880 wdiEventData.pEventData = pwdiFlushAcReqParams;
4881 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4882 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004883 wdiEventData.pUserData = pUserData;
4884
4885 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4886
4887}/*WDI_FlushAcReq*/
4888
4889/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004890 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004891 wants to notify the lower mac on a BT AMP event. This is
4892 to inform BTC-SLM that some BT AMP event occurred. Upon
4893 the call of this API the WLAN DAL will pack and send a
4894 HAL BT AMP event request message to the lower RIVA
4895 sub-system if DAL is in state STARTED.
4896
4897 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004898 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004899
Jeff Johnsone7245742012-09-05 17:12:55 -07004900
4901 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004903
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 wdiBtAmpEventRspCb: callback for passing back the
4905 response of the BT AMP event operation received from the
4906 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004907
Jeff Johnson295189b2012-06-20 16:38:30 -07004908 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004909 callback
4910
Jeff Johnson295189b2012-06-20 16:38:30 -07004911 @return Result of the function call
4912*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004913WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004914WDI_BtAmpEventReq
4915(
4916 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4917 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4918 void* pUserData
4919)
4920{
4921 WDI_EventInfoType wdiEventData;
4922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4923
4924 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004925 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004926 ------------------------------------------------------------------------*/
4927 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4928 {
4929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4930 "WDI API call before module is initialized - Fail request");
4931
Jeff Johnsone7245742012-09-05 17:12:55 -07004932 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004933 }
4934
4935 /*------------------------------------------------------------------------
4936 Fill in Event data and post to the Main FSM
4937 ------------------------------------------------------------------------*/
4938 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004939 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4940 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4941 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004942 wdiEventData.pUserData = pUserData;
4943
4944 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4945
4946}/*WDI_BtAmpEventReq*/
4947
Jeff Johnsone7245742012-09-05 17:12:55 -07004948#ifdef FEATURE_OEM_DATA_SUPPORT
4949/**
4950 @brief WDI_Start Oem Data Req will be called when the upper MAC
4951 wants to notify the lower mac on a oem data Req event.Upon
4952 the call of this API the WLAN DAL will pack and send a
4953 HAL OEM Data Req event request message to the lower RIVA
4954 sub-system if DAL is in state STARTED.
4955
4956 In state BUSY this request will be queued. Request won't
4957 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004958
4959
Jeff Johnsone7245742012-09-05 17:12:55 -07004960
4961 @param pwdiOemDataReqParams: the Oem Data Req as
4962 specified by the Device Interface
4963
4964 wdiStartOemDataRspCb: callback for passing back the
4965 response of the Oem Data Req received from the
4966 device
4967
4968 pUserData: user data will be passed back with the
4969 callback
4970
4971 @return Result of the function call
4972*/
4973WDI_Status
4974WDI_StartOemDataReq
4975(
4976 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4977 WDI_oemDataRspCb wdiOemDataRspCb,
4978 void* pUserData
4979)
4980{
4981 WDI_EventInfoType wdiEventData;
4982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4983
4984 /*------------------------------------------------------------------------
4985 Sanity Check
4986 ------------------------------------------------------------------------*/
4987 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4988 {
4989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4990 "WDI API call before module is initialized - Fail request");
4991
4992 return WDI_STATUS_E_NOT_ALLOWED;
4993 }
4994
4995 /*------------------------------------------------------------------------
4996 Fill in Event data and post to the Main FSM
4997 ------------------------------------------------------------------------*/
4998 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4999 wdiEventData.pEventData = pwdiOemDataReqParams;
5000 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5001 wdiEventData.pCBfnc = wdiOemDataRspCb;
5002 wdiEventData.pUserData = pUserData;
5003
5004 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5005
5006
5007}
5008
5009#endif
5010
5011
5012/*========================================================================
5013
Jeff Johnson295189b2012-06-20 16:38:30 -07005014 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005015
Jeff Johnson295189b2012-06-20 16:38:30 -07005016==========================================================================*/
5017/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005018 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 the WLAN HW to change the current channel of operation.
5020 Upon the call of this API the WLAN DAL will pack and
5021 send a HAL Start request message to the lower RIVA
5022 sub-system if DAL is in state STARTED.
5023
5024 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005026
5027 WDI_Start must have been called.
5028
Jeff Johnsone7245742012-09-05 17:12:55 -07005029 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005030 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005031
Jeff Johnson295189b2012-06-20 16:38:30 -07005032 wdiSwitchChRspCb: callback for passing back the response
5033 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005034
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005036 callback
5037
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 @see WDI_Start
5039 @return Result of the function call
5040*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005041WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005042WDI_SwitchChReq
5043(
5044 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5045 WDI_SwitchChRspCb wdiSwitchChRspCb,
5046 void* pUserData
5047)
5048{
5049 WDI_EventInfoType wdiEventData;
5050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5051
5052 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005054 ------------------------------------------------------------------------*/
5055 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5056 {
5057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5058 "WDI API call before module is initialized - Fail request");
5059
Jeff Johnsone7245742012-09-05 17:12:55 -07005060 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005061 }
5062
5063 /*------------------------------------------------------------------------
5064 Fill in Event data and post to the Main FSM
5065 ------------------------------------------------------------------------*/
5066 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005067 wdiEventData.pEventData = pwdiSwitchChReqParams;
5068 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5069 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005070 wdiEventData.pUserData = pUserData;
5071
5072 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5073
5074}/*WDI_SwitchChReq*/
5075
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005076/**
5077 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5078 the WLAN HW to change the current channel of operation.
5079 Upon the call of this API the WLAN DAL will pack and
5080 send a HAL Start request message to the lower RIVA
5081 sub-system if DAL is in state STARTED.
5082 This request message also includes source of channel switch,
5083 like CSA,
5084
5085 In state BUSY this request will be queued. Request won't
5086 be allowed in any other state.
5087
5088 WDI_Start must have been called.
5089
5090 @param wdiSwitchChReqParams: the switch ch parameters as
5091 specified by the Device Interface
5092
5093 wdiSwitchChRspCb: callback for passing back the response
5094 of the switch ch operation received from the device
5095
5096 pUserData: user data will be passed back with the
5097 callback
5098
5099 @see WDI_Start
5100 @return Result of the function call
5101*/
5102WDI_Status
5103WDI_SwitchChReq_V1
5104(
5105 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5106 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5107 void* pUserData
5108)
5109{
5110 WDI_EventInfoType wdiEventData;
5111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5113 "WDI API call WDI_SwitchChReq_V1");
5114 /*------------------------------------------------------------------------
5115 Sanity Check
5116 ------------------------------------------------------------------------*/
5117 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5118 {
5119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5120 "WDI API call before module is initialized - Fail request");
5121
5122 return WDI_STATUS_E_NOT_ALLOWED;
5123 }
5124
5125 /*------------------------------------------------------------------------
5126 Fill in Event data and post to the Main FSM
5127 ------------------------------------------------------------------------*/
5128 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5129 wdiEventData.pEventData = pwdiSwitchChReqParams;
5130 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5131 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5132 wdiEventData.pUserData = pUserData;
5133
5134 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5135
5136}/*WDI_SwitchChReq_V1*/
5137
Jeff Johnson295189b2012-06-20 16:38:30 -07005138
5139/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005140 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005141 wishes to add or update a STA in HW. Upon the call of
5142 this API the WLAN DAL will pack and send a HAL Start
5143 message request message to the lower RIVA sub-system if
5144 DAL is in state STARTED.
5145
5146 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005147 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005148
5149 WDI_Start must have been called.
5150
Jeff Johnsone7245742012-09-05 17:12:55 -07005151 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005152 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005153
Jeff Johnson295189b2012-06-20 16:38:30 -07005154 wdiConfigSTARspCb: callback for passing back the
5155 response of the config STA operation received from the
5156 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005157
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005159 callback
5160
Jeff Johnson295189b2012-06-20 16:38:30 -07005161 @see WDI_Start
5162 @return Result of the function call
5163*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005164WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005165WDI_ConfigSTAReq
5166(
5167 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5168 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5169 void* pUserData
5170)
5171{
5172 WDI_EventInfoType wdiEventData;
5173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5174
5175 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005176 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005177 ------------------------------------------------------------------------*/
5178 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5179 {
5180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5181 "WDI API call before module is initialized - Fail request");
5182
Jeff Johnsone7245742012-09-05 17:12:55 -07005183 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005184 }
5185
5186 /*------------------------------------------------------------------------
5187 Fill in Event data and post to the Main FSM
5188 ------------------------------------------------------------------------*/
5189 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005190 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5191 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5192 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005193 wdiEventData.pUserData = pUserData;
5194
5195 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5196
5197}/*WDI_ConfigSTAReq*/
5198
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005199 /**
5200 @brief WDI_UpdateChannelReq will be called when the upper MAC
5201 wants to update the channel list on change in country code.
5202
5203 In state BUSY this request will be queued. Request won't
5204 be allowed in any other state.
5205
5206 WDI_UpdateChannelReq must have been called.
5207
5208 @param wdiUpdateChannelReqParams: the updated channel parameters
5209 as specified by the Device Interface
5210
5211 wdiUpdateChannelRspCb: callback for passing back the
5212 response of the update channel operation received from
5213 the device
5214
5215 pUserData: user data will be passed back with the
5216 callback
5217
5218 @return Result of the function call
5219*/
5220WDI_Status
5221WDI_UpdateChannelReq
5222(
5223 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5224 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5225 void* pUserData
5226)
5227{
5228 WDI_EventInfoType wdiEventData = {{0}};
5229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5230
5231 /*------------------------------------------------------------------------
5232 Sanity Check
5233 ------------------------------------------------------------------------*/
5234 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5235 {
5236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5237 "WDI API call before module is initialized - Fail request");
5238
5239 return WDI_STATUS_E_NOT_ALLOWED;
5240 }
5241
5242 /*------------------------------------------------------------------------
5243 Fill in Event data and post to the Main FSM
5244 ------------------------------------------------------------------------*/
5245 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5246 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5247 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5248 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5249 wdiEventData.pUserData = pUserData;
5250
5251 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5252
5253}/*WDI_UpdateChannelReq*/
5254
Jeff Johnson295189b2012-06-20 16:38:30 -07005255/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005257 wants to change the state of an ongoing link. Upon the
5258 call of this API the WLAN DAL will pack and send a HAL
5259 Start message request message to the lower RIVA
5260 sub-system if DAL is in state STARTED.
5261
5262 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005263 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005264
5265 WDI_JoinStartReq must have been called.
5266
Jeff Johnsone7245742012-09-05 17:12:55 -07005267 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005269
Jeff Johnson295189b2012-06-20 16:38:30 -07005270 wdiSetLinkStateRspCb: callback for passing back the
5271 response of the set link state operation received from
5272 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005273
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 callback
5276
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 @see WDI_JoinStartReq
5278 @return Result of the function call
5279*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005280WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005281WDI_SetLinkStateReq
5282(
5283 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5284 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5285 void* pUserData
5286)
5287{
5288 WDI_EventInfoType wdiEventData;
5289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5290
5291 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005292 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005293 ------------------------------------------------------------------------*/
5294 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5295 {
5296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5297 "WDI API call before module is initialized - Fail request");
5298
Jeff Johnsone7245742012-09-05 17:12:55 -07005299 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 }
5301
5302 /*------------------------------------------------------------------------
5303 Fill in Event data and post to the Main FSM
5304 ------------------------------------------------------------------------*/
5305 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5307 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5308 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005309 wdiEventData.pUserData = pUserData;
5310
5311 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5312
5313}/*WDI_SetLinkStateReq*/
5314
5315
5316/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005317 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005318 to get statistics (MIB counters) from the device. Upon
5319 the call of this API the WLAN DAL will pack and send a
5320 HAL Start request message to the lower RIVA sub-system
5321 if DAL is in state STARTED.
5322
5323 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005324 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005325
5326 WDI_Start must have been called.
5327
Jeff Johnsone7245742012-09-05 17:12:55 -07005328 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005329 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005330
Jeff Johnson295189b2012-06-20 16:38:30 -07005331 wdiGetStatsRspCb: callback for passing back the response
5332 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005333
Jeff Johnson295189b2012-06-20 16:38:30 -07005334 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005335 callback
5336
Jeff Johnson295189b2012-06-20 16:38:30 -07005337 @see WDI_Start
5338 @return Result of the function call
5339*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005340WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005341WDI_GetStatsReq
5342(
5343 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5344 WDI_GetStatsRspCb wdiGetStatsRspCb,
5345 void* pUserData
5346)
5347{
5348 WDI_EventInfoType wdiEventData;
5349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5350
5351 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005352 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005353 ------------------------------------------------------------------------*/
5354 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5355 {
5356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5357 "WDI API call before module is initialized - Fail request");
5358
Jeff Johnsone7245742012-09-05 17:12:55 -07005359 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005360 }
5361
5362 /*------------------------------------------------------------------------
5363 Fill in Event data and post to the Main FSM
5364 ------------------------------------------------------------------------*/
5365 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005366 wdiEventData.pEventData = pwdiGetStatsReqParams;
5367 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5368 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005369 wdiEventData.pUserData = pUserData;
5370
5371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5372
5373}/*WDI_GetStatsReq*/
5374
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005375#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005376/**
5377 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5378 to get roam rssi from the device. Upon
5379 the call of this API the WLAN DAL will pack and send a
5380 HAL Start request message to the lower RIVA sub-system
5381 if DAL is in state STARTED.
5382
5383 In state BUSY this request will be queued. Request won't
5384 be allowed in any other state.
5385
5386 WDI_Start must have been called.
5387
5388 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5389 specified by the Device Interface
5390
5391 wdiGetRoamRssiRspCb: callback for passing back the response
5392 of the get stats operation received from the device
5393
5394 pUserData: user data will be passed back with the
5395 callback
5396
5397 @see WDI_Start
5398 @return Result of the function call
5399*/
5400WDI_Status
5401WDI_GetRoamRssiReq
5402(
5403 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5404 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5405 void* pUserData
5406)
5407{
5408 WDI_EventInfoType wdiEventData;
5409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5410
5411 /*------------------------------------------------------------------------
5412 Sanity Check
5413 ------------------------------------------------------------------------*/
5414 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5415 {
5416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5417 "WDI API call before module is initialized - Fail request");
5418
5419 return WDI_STATUS_E_NOT_ALLOWED;
5420 }
5421 /*------------------------------------------------------------------------
5422 Fill in Event data and post to the Main FSM
5423 ------------------------------------------------------------------------*/
5424 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5425 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5426 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5427 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5428 wdiEventData.pUserData = pUserData;
5429
5430 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5431
5432}/*WDI_GetRoamRssiReq*/
5433#endif
5434
Jeff Johnson295189b2012-06-20 16:38:30 -07005435
5436/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005438 it wishes to change the configuration of the WLAN
5439 Device. Upon the call of this API the WLAN DAL will pack
5440 and send a HAL Update CFG request message to the lower
5441 RIVA sub-system if DAL is in state STARTED.
5442
5443 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005444 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005445
5446 WDI_Start must have been called.
5447
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005450
Jeff Johnson295189b2012-06-20 16:38:30 -07005451 wdiUpdateCfgsRspCb: callback for passing back the
5452 response of the update cfg operation received from the
5453 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005454
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005456 callback
5457
Jeff Johnson295189b2012-06-20 16:38:30 -07005458 @see WDI_Start
5459 @return Result of the function call
5460*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005461WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005462WDI_UpdateCfgReq
5463(
5464 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5465 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5466 void* pUserData
5467)
5468{
5469 WDI_EventInfoType wdiEventData;
5470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5471
5472 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005473 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005474 ------------------------------------------------------------------------*/
5475 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5476 {
5477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5478 "WDI API call before module is initialized - Fail request");
5479
Jeff Johnsone7245742012-09-05 17:12:55 -07005480 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 }
5482
5483 /*------------------------------------------------------------------------
5484 Fill in Event data and post to the Main FSM
5485 ------------------------------------------------------------------------*/
5486 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005487 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5488 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5489 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005490 wdiEventData.pUserData = pUserData;
5491
5492 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5493
5494}/*WDI_UpdateCfgReq*/
5495
5496
5497
5498/**
5499 @brief WDI_AddBAReq will be called when the upper MAC has setup
5500 successfully a BA session and needs to notify the HW for
5501 the appropriate settings to take place. Upon the call of
5502 this API the WLAN DAL will pack and send a HAL Add BA
5503 request message to the lower RIVA sub-system if DAL is
5504 in state STARTED.
5505
5506 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005507 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005508
5509 WDI_PostAssocReq must have been called.
5510
5511 @param wdiAddBAReqParams: the add BA parameters as specified by
5512 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005513
Jeff Johnson295189b2012-06-20 16:38:30 -07005514 wdiAddBARspCb: callback for passing back the response of
5515 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005516
Jeff Johnson295189b2012-06-20 16:38:30 -07005517 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005518 callback
5519
Jeff Johnson295189b2012-06-20 16:38:30 -07005520 @see WDI_PostAssocReq
5521 @return Result of the function call
5522*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005523WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005524WDI_AddBAReq
5525(
5526 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5527 WDI_AddBARspCb wdiAddBARspCb,
5528 void* pUserData
5529)
5530{
5531 WDI_EventInfoType wdiEventData;
5532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5533
5534 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005535 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005536 ------------------------------------------------------------------------*/
5537 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5538 {
5539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5540 "WDI API call before module is initialized - Fail request");
5541
Jeff Johnsone7245742012-09-05 17:12:55 -07005542 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005543 }
5544
5545 /*------------------------------------------------------------------------
5546 Fill in Event data and post to the Main FSM
5547 ------------------------------------------------------------------------*/
5548 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005549 wdiEventData.pEventData = pwdiAddBAReqParams;
5550 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5551 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005552 wdiEventData.pUserData = pUserData;
5553
5554 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5555
5556}/*WDI_AddBAReq*/
5557
5558
5559/**
5560 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5561 successfully a BA session and needs to notify the HW for
5562 the appropriate settings to take place. Upon the call of
5563 this API the WLAN DAL will pack and send a HAL Add BA
5564 request message to the lower RIVA sub-system if DAL is
5565 in state STARTED.
5566
5567 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005568 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005569
5570 WDI_PostAssocReq must have been called.
5571
5572 @param wdiAddBAReqParams: the add BA parameters as specified by
5573 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005574
Jeff Johnson295189b2012-06-20 16:38:30 -07005575 wdiAddBARspCb: callback for passing back the response of
5576 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005577
Jeff Johnson295189b2012-06-20 16:38:30 -07005578 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005579 callback
5580
Jeff Johnson295189b2012-06-20 16:38:30 -07005581 @see WDI_PostAssocReq
5582 @return Result of the function call
5583*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005584WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005585WDI_TriggerBAReq
5586(
5587 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5588 WDI_TriggerBARspCb wdiTriggerBARspCb,
5589 void* pUserData
5590)
5591{
5592 WDI_EventInfoType wdiEventData;
5593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5594
5595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005597 ------------------------------------------------------------------------*/
5598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5599 {
5600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5601 "WDI API call before module is initialized - Fail request");
5602
Jeff Johnsone7245742012-09-05 17:12:55 -07005603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005604 }
5605
5606 /*------------------------------------------------------------------------
5607 Fill in Event data and post to the Main FSM
5608 ------------------------------------------------------------------------*/
5609 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005610 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5611 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5612 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005613 wdiEventData.pUserData = pUserData;
5614
5615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5616
5617}/*WDI_AddBAReq*/
5618
5619/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005620 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005621 wishes to update any of the Beacon parameters used by HW.
5622 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5623 message to the lower RIVA sub-system if DAL is in state
5624 STARTED.
5625
5626 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005627 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005628
5629 WDI_PostAssocReq must have been called.
5630
Jeff Johnsone7245742012-09-05 17:12:55 -07005631 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005632 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005633
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 wdiUpdateBeaconParamsRspCb: callback for passing back the
5635 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005636
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005638 callback
5639
Jeff Johnson295189b2012-06-20 16:38:30 -07005640 @see WDI_PostAssocReq
5641 @return Result of the function call
5642*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005643WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005644WDI_UpdateBeaconParamsReq
5645(
5646 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5647 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5648 void* pUserData
5649)
5650{
5651 WDI_EventInfoType wdiEventData;
5652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5653
5654 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005655 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005656 ------------------------------------------------------------------------*/
5657 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5658 {
5659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5660 "WDI API call before module is initialized - Fail request");
5661
Jeff Johnsone7245742012-09-05 17:12:55 -07005662 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005663 }
5664
5665 /*------------------------------------------------------------------------
5666 Fill in Event data and post to the Main FSM
5667 ------------------------------------------------------------------------*/
5668 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005669 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5670 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5671 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005672 wdiEventData.pUserData = pUserData;
5673
5674 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5675
5676}/*WDI_UpdateBeaconParamsReq*/
5677
5678/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005679 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005680 wishes to update the Beacon template used by HW.
5681 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5682 message to the lower RIVA sub-system if DAL is in state
5683 STARTED.
5684
5685 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005686 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005687
5688 WDI_PostAssocReq must have been called.
5689
Jeff Johnsone7245742012-09-05 17:12:55 -07005690 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005691 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005692
Jeff Johnson295189b2012-06-20 16:38:30 -07005693 wdiSendBeaconParamsRspCb: callback for passing back the
5694 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005695
Jeff Johnson295189b2012-06-20 16:38:30 -07005696 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005697 callback
5698
Jeff Johnson295189b2012-06-20 16:38:30 -07005699 @see WDI_PostAssocReq
5700 @return Result of the function call
5701*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005702WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005703WDI_SendBeaconParamsReq
5704(
5705 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5706 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5707 void* pUserData
5708)
5709{
5710 WDI_EventInfoType wdiEventData;
5711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5712
5713 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005714 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005715 ------------------------------------------------------------------------*/
5716 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5717 {
5718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5719 "WDI API call before module is initialized - Fail request");
5720
Jeff Johnsone7245742012-09-05 17:12:55 -07005721 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005722 }
5723
5724 /*------------------------------------------------------------------------
5725 Fill in Event data and post to the Main FSM
5726 ------------------------------------------------------------------------*/
5727 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005728 wdiEventData.pEventData = pwdiSendBeaconParams;
5729 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5730 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005731 wdiEventData.pUserData = pUserData;
5732
5733 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5734
5735}/*WDI_SendBeaconParamsReq*/
5736
5737/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005738 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005739 upper MAC wants to update the probe response template to
5740 be transmitted as Soft AP
5741 Upon the call of this API the WLAN DAL will
5742 pack and send the probe rsp template message to the
5743 lower RIVA sub-system if DAL is in state STARTED.
5744
5745 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005747
5748
Jeff Johnsone7245742012-09-05 17:12:55 -07005749 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005750 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005751
Jeff Johnson295189b2012-06-20 16:38:30 -07005752 wdiSendBeaconParamsRspCb: callback for passing back the
5753 response of the Send Beacon Params operation received
5754 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005755
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005757 callback
5758
Jeff Johnson295189b2012-06-20 16:38:30 -07005759 @see WDI_AddBAReq
5760 @return Result of the function call
5761*/
5762
Jeff Johnsone7245742012-09-05 17:12:55 -07005763WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005764WDI_UpdateProbeRspTemplateReq
5765(
5766 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5767 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5768 void* pUserData
5769)
5770{
5771 WDI_EventInfoType wdiEventData;
5772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5773
5774 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005775 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005776 ------------------------------------------------------------------------*/
5777 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5778 {
5779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5780 "WDI API call before module is initialized - Fail request");
5781
Jeff Johnsone7245742012-09-05 17:12:55 -07005782 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005783 }
5784
5785 /*------------------------------------------------------------------------
5786 Fill in Event data and post to the Main FSM
5787 ------------------------------------------------------------------------*/
5788 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005789 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5790 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5791 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005792 wdiEventData.pUserData = pUserData;
5793
5794 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5795
5796}/*WDI_UpdateProbeRspTemplateReq*/
5797
5798/**
5799 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5800 to the NV memory.
5801
5802
5803 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5804 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005805
Jeff Johnson295189b2012-06-20 16:38:30 -07005806 wdiNvDownloadRspCb: callback for passing back the response of
5807 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005808
Jeff Johnson295189b2012-06-20 16:38:30 -07005809 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 callback
5811
Jeff Johnson295189b2012-06-20 16:38:30 -07005812 @see WDI_PostAssocReq
5813 @return Result of the function call
5814*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005815WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005816WDI_NvDownloadReq
5817(
5818 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5819 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5820 void* pUserData
5821)
5822{
5823 WDI_EventInfoType wdiEventData;
5824
5825 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005826 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 ------------------------------------------------------------------------*/
5828 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5829 {
5830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5831 "WDI API call before module is initialized - Fail request");
5832
Jeff Johnsone7245742012-09-05 17:12:55 -07005833 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005834 }
5835
5836 /*------------------------------------------------------------------------
5837 Fill in Event data and post to the Main FSM
5838 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005839 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5840 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5841 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5842 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 wdiEventData.pUserData = pUserData;
5844
5845 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5846
5847}/*WDI_NVDownloadReq*/
5848
Jeff Johnson295189b2012-06-20 16:38:30 -07005849/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005850 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005851 upper MAC wants to send Notice of Absence
5852 Upon the call of this API the WLAN DAL will
5853 pack and send the probe rsp template message to the
5854 lower RIVA sub-system if DAL is in state STARTED.
5855
5856 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005857 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005858
5859
Jeff Johnsone7245742012-09-05 17:12:55 -07005860 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005861 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005862
Jeff Johnson295189b2012-06-20 16:38:30 -07005863 wdiSendBeaconParamsRspCb: callback for passing back the
5864 response of the Send Beacon Params operation received
5865 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005866
Jeff Johnson295189b2012-06-20 16:38:30 -07005867 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005868 callback
5869
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 @see WDI_AddBAReq
5871 @return Result of the function call
5872*/
5873WDI_Status
5874WDI_SetP2PGONOAReq
5875(
5876 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5877 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5878 void* pUserData
5879)
5880{
5881 WDI_EventInfoType wdiEventData;
5882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5883
5884 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005885 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 ------------------------------------------------------------------------*/
5887 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5888 {
5889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5890 "WDI API call before module is initialized - Fail request");
5891
Jeff Johnsone7245742012-09-05 17:12:55 -07005892 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005893 }
5894
5895 /*------------------------------------------------------------------------
5896 Fill in Event data and post to the Main FSM
5897 ------------------------------------------------------------------------*/
5898 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5900 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5901 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005902 wdiEventData.pUserData = pUserData;
5903
5904 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5905
5906}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005907
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305908#ifdef FEATURE_WLAN_TDLS
5909/**
5910 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5911 upper MAC wants to send TDLS Link Establish Request Parameters
5912 Upon the call of this API the WLAN DAL will
5913 pack and send the TDLS Link Establish Request message to the
5914 lower RIVA sub-system if DAL is in state STARTED.
5915
5916 In state BUSY this request will be queued. Request won't
5917 be allowed in any other state.
5918
5919
5920 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5921 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5922
5923 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5924 response of the TDLS Link Establish request received
5925 from the device
5926
5927 pUserData: user data will be passed back with the
5928 callback
5929
5930 @see
5931 @return Result of the function call
5932*/
5933WDI_Status
5934WDI_SetTDLSLinkEstablishReq
5935(
5936 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5937 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5938 void* pUserData
5939)
5940{
5941 WDI_EventInfoType wdiEventData;
5942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5943
5944 /*------------------------------------------------------------------------
5945 Sanity Check
5946 ------------------------------------------------------------------------*/
5947 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5948 {
5949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5950 "WDI API call before module is initialized - Fail request");
5951
5952 return WDI_STATUS_E_NOT_ALLOWED;
5953 }
5954
5955 /*------------------------------------------------------------------------
5956 Fill in Event data and post to the Main FSM
5957 ------------------------------------------------------------------------*/
5958 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5959 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5960 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5961 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5962 wdiEventData.pUserData = pUserData;
5963
5964 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5965
5966}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05305967
5968//tdlsoffchan
5969/**
5970 @brief WDI_SetTDLSChanSwitchReq will be called when the
5971 upper MAC wants to send TDLS Chan Switch Request Parameters
5972 Upon the call of this API the WLAN DAL will
5973 pack and send the TDLS Link Establish Request message to the
5974 lower RIVA sub-system if DAL is in state STARTED.
5975
5976 In state BUSY this request will be queued. Request won't
5977 be allowed in any other state.
5978
5979
5980 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
5981 for Link Establishment (Used for TDLS Off Channel ...)
5982
5983 wdiTDLSChanSwitchReqRspCb: callback for passing back the
5984 response of the TDLS Chan Switch request received
5985 from the device
5986
5987 pUserData: user data will be passed back with the
5988 callback
5989
5990 @see
5991 @return Result of the function call
5992*/
5993WDI_Status
5994WDI_SetTDLSChanSwitchReq
5995(
5996 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
5997 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
5998 void* pUserData
5999)
6000{
6001 WDI_EventInfoType wdiEventData;
6002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6003
6004 /*------------------------------------------------------------------------
6005 Sanity Check
6006 ------------------------------------------------------------------------*/
6007 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6008 {
6009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6010 "WDI API call before module is initialized - Fail request");
6011
6012 return WDI_STATUS_E_NOT_ALLOWED;
6013 }
6014
6015 /*------------------------------------------------------------------------
6016 Fill in Event data and post to the Main FSM
6017 ------------------------------------------------------------------------*/
6018 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6019 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6020 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6021 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6022 wdiEventData.pUserData = pUserData;
6023
6024 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6025
6026}/*WDI_SetTDLSChanSwitchReq*/
6027
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306028#endif
6029
Jeff Johnson295189b2012-06-20 16:38:30 -07006030/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006031 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006032 UMAC wanted to add STA self while opening any new session
6033 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006034 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006035
6036
Jeff Johnsone7245742012-09-05 17:12:55 -07006037 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006038 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006039
Jeff Johnson295189b2012-06-20 16:38:30 -07006040 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006041 callback
6042
6043 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006044 @return Result of the function call
6045*/
6046WDI_Status
6047WDI_AddSTASelfReq
6048(
6049 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6050 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6051 void* pUserData
6052)
6053{
6054 WDI_EventInfoType wdiEventData;
6055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6056
6057 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006058 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006059 ------------------------------------------------------------------------*/
6060 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6061 {
6062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6063 "WDI API call before module is initialized - Fail request");
6064
Jeff Johnsone7245742012-09-05 17:12:55 -07006065 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006066 }
6067
6068 /*------------------------------------------------------------------------
6069 Fill in Event data and post to the Main FSM
6070 ------------------------------------------------------------------------*/
6071 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006072 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6073 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6074 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006075 wdiEventData.pUserData = pUserData;
6076
6077 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6078
6079}/*WDI_AddSTASelfReq*/
6080
6081
Jeff Johnsone7245742012-09-05 17:12:55 -07006082#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006083/**
6084 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6085 the device of a successful add TSpec negotiation. HW
6086 needs to receive the TSpec Info from the UMAC in order
6087 to configure properly the QoS data traffic. Upon the
6088 call of this API the WLAN DAL will pack and send a HAL
6089 Add TS request message to the lower RIVA sub-system if
6090 DAL is in state STARTED.
6091
6092 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006093 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006094
6095 WDI_PostAssocReq must have been called.
6096
6097 @param wdiAddTsReqParams: the add TS parameters as specified by
6098 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006099
Jeff Johnson295189b2012-06-20 16:38:30 -07006100 wdiAddTsRspCb: callback for passing back the response of
6101 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006102
Jeff Johnson295189b2012-06-20 16:38:30 -07006103 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006104 callback
6105
Jeff Johnson295189b2012-06-20 16:38:30 -07006106 @see WDI_PostAssocReq
6107 @return Result of the function call
6108*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006109WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006110WDI_AggrAddTSReq
6111(
6112 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6113 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6114 void* pUserData
6115)
6116{
6117 WDI_EventInfoType wdiEventData;
6118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6119
6120 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006121 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 ------------------------------------------------------------------------*/
6123 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6124 {
6125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6126 "WDI API call before module is initialized - Fail request");
6127
Jeff Johnsone7245742012-09-05 17:12:55 -07006128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 }
6130
6131 /*------------------------------------------------------------------------
6132 Fill in Event data and post to the Main FSM
6133 ------------------------------------------------------------------------*/
6134 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006135 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6136 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6137 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 wdiEventData.pUserData = pUserData;
6139
6140 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6141
6142}/*WDI_AggrAddTSReq*/
6143
6144#endif /* WLAN_FEATURE_VOWIFI_11R */
6145
Jeff Johnson295189b2012-06-20 16:38:30 -07006146/**
6147 @brief WDI_FTMCommandReq
6148 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006149
6150 @param ftmCommandReq: FTM Command Body
6151 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006152 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006153
Jeff Johnson295189b2012-06-20 16:38:30 -07006154 @see
6155 @return Result of the function call
6156*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006157WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006158WDI_FTMCommandReq
6159(
6160 WDI_FTMCommandReqType *ftmCommandReq,
6161 WDI_FTMCommandRspCb ftmCommandRspCb,
6162 void *pUserData
6163)
6164{
6165 WDI_EventInfoType wdiEventData;
6166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6167
6168 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006169 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006170 ------------------------------------------------------------------------*/
6171 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6172 {
6173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6174 "WDI API call before module is initialized - Fail request");
6175
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006177 }
6178
6179 /*------------------------------------------------------------------------
6180 Fill in Event data and post to the Main FSM
6181 ------------------------------------------------------------------------*/
6182 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6183 wdiEventData.pEventData = (void *)ftmCommandReq;
6184 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6185 wdiEventData.pCBfnc = ftmCommandRspCb;
6186 wdiEventData.pUserData = pUserData;
6187
6188 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6189}
Jeff Johnson295189b2012-06-20 16:38:30 -07006190/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006191 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006192
6193 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006194 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006195
6196
6197 @param pwdiResumeReqParams: as specified by
6198 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006199
Jeff Johnson295189b2012-06-20 16:38:30 -07006200 wdiResumeReqRspCb: callback for passing back the response of
6201 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006202
Jeff Johnson295189b2012-06-20 16:38:30 -07006203 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006204 callback
6205
6206 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006207 @return Result of the function call
6208*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006209WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006210WDI_HostResumeReq
6211(
6212 WDI_ResumeParamsType* pwdiResumeReqParams,
6213 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6214 void* pUserData
6215)
6216{
6217 WDI_EventInfoType wdiEventData;
6218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6219
6220 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006221 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006222 ------------------------------------------------------------------------*/
6223 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6224 {
6225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6226 "WDI API call before module is initialized - Fail request");
6227
Jeff Johnsone7245742012-09-05 17:12:55 -07006228 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006229 }
6230
6231 /*------------------------------------------------------------------------
6232 Fill in Event data and post to the Main FSM
6233 ------------------------------------------------------------------------*/
6234 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006235 wdiEventData.pEventData = pwdiResumeReqParams;
6236 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6237 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006238 wdiEventData.pUserData = pUserData;
6239
6240 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6241
6242}/*WDI_HostResumeReq*/
6243
6244/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006245 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006246
6247 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006248 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006249
6250
6251 @param pwdiDelStaSelfReqParams: as specified by
6252 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006253
Jeff Johnson295189b2012-06-20 16:38:30 -07006254 wdiDelStaSelfRspCb: callback for passing back the response of
6255 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006256
Jeff Johnson295189b2012-06-20 16:38:30 -07006257 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006258 callback
6259
Jeff Johnson295189b2012-06-20 16:38:30 -07006260 @see WDI_PostAssocReq
6261 @return Result of the function call
6262*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006263WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006264WDI_DelSTASelfReq
6265(
6266 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6267 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6268 void* pUserData
6269)
6270{
6271 WDI_EventInfoType wdiEventData;
6272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6273
6274 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006275 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006276 ------------------------------------------------------------------------*/
6277 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6278 {
6279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6280 "WDI API call before module is initialized - Fail request");
6281
Jeff Johnsone7245742012-09-05 17:12:55 -07006282 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006283 }
6284
6285 /*------------------------------------------------------------------------
6286 Fill in Event data and post to the Main FSM
6287 ------------------------------------------------------------------------*/
6288 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006289 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6290 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6291 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006292 wdiEventData.pUserData = pUserData;
6293
6294 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6295
6296}/*WDI_AggrAddTSReq*/
6297
6298/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006299 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6300 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 Upon the call of this API the WLAN DAL will pack
6302 and send a HAL Set Tx Per Tracking request message to the
6303 lower RIVA sub-system if DAL is in state STARTED.
6304
6305 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006306 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006307
Jeff Johnsone7245742012-09-05 17:12:55 -07006308 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006309 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006310
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 pwdiSetTxPerTrackingRspCb: callback for passing back the
6312 response of the set Tx PER Tracking configurations operation received
6313 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006314
Jeff Johnson295189b2012-06-20 16:38:30 -07006315 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006316 callback
6317
Jeff Johnson295189b2012-06-20 16:38:30 -07006318 @return Result of the function call
6319*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006320WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006321WDI_SetTxPerTrackingReq
6322(
6323 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6324 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6325 void* pUserData
6326)
6327{
6328 WDI_EventInfoType wdiEventData;
6329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6330
6331 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006332 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 ------------------------------------------------------------------------*/
6334 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6335 {
6336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6337 "WDI API call before module is initialized - Fail request");
6338
Jeff Johnsone7245742012-09-05 17:12:55 -07006339 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006340 }
6341
6342 /*------------------------------------------------------------------------
6343 Fill in Event data and post to the Main FSM
6344 ------------------------------------------------------------------------*/
6345 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006346 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006348 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006349 wdiEventData.pUserData = pUserData;
6350
6351 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6352
6353}/*WDI_SetTxPerTrackingReq*/
6354
6355/**
6356 @brief WDI_SetTmLevelReq
6357 If HW Thermal condition changed, driver should react based on new
6358 HW thermal condition.
6359
6360 @param pwdiSetTmLevelReq: New thermal condition information
6361
6362 pwdiSetTmLevelRspCb: callback
6363
6364 usrData: user data will be passed back with the
6365 callback
6366
6367 @return Result of the function call
6368*/
6369WDI_Status
6370WDI_SetTmLevelReq
6371(
6372 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6373 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6374 void *usrData
6375)
6376{
6377 WDI_EventInfoType wdiEventData;
6378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6379
6380 /*------------------------------------------------------------------------
6381 Sanity Check
6382 ------------------------------------------------------------------------*/
6383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6384 {
6385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6386 "WDI API call before module is initialized - Fail request");
6387
6388 return WDI_STATUS_E_NOT_ALLOWED;
6389 }
6390
6391 /*------------------------------------------------------------------------
6392 Fill in Event data and post to the Main FSM
6393 ------------------------------------------------------------------------*/
6394 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6395 wdiEventData.pEventData = pwdiSetTmLevelReq;
6396 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6397 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6398 wdiEventData.pUserData = usrData;
6399
6400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6401}
6402
6403/**
6404 @brief WDI_HostSuspendInd
6405
6406 Suspend Indication from the upper layer will be sent
6407 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006408
Jeff Johnson295189b2012-06-20 16:38:30 -07006409 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006410
6411 @see
6412
Jeff Johnson295189b2012-06-20 16:38:30 -07006413 @return Status of the request
6414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006416WDI_HostSuspendInd
6417(
6418 WDI_SuspendParamsType* pwdiSuspendIndParams
6419)
6420{
6421
6422 WDI_EventInfoType wdiEventData;
6423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6424
6425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006426 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006427 ------------------------------------------------------------------------*/
6428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6429 {
6430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6431 "WDI API call before module is initialized - Fail request");
6432
Jeff Johnsone7245742012-09-05 17:12:55 -07006433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006434 }
6435
6436 /*------------------------------------------------------------------------
6437 Fill in Event data and post to the Main FSM
6438 ------------------------------------------------------------------------*/
6439 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 wdiEventData.pEventData = pwdiSuspendIndParams;
6441 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6442 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006443 wdiEventData.pUserData = NULL;
6444
6445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6446
6447}/*WDI_HostSuspendInd*/
6448
6449/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006450 @brief WDI_TrafficStatsInd
6451 Traffic Stats from the upper layer will be sent
6452 down to HAL
6453
6454 @param WDI_TrafficStatsIndType
6455
6456 @see
6457
6458 @return Status of the request
6459*/
6460WDI_Status
6461WDI_TrafficStatsInd
6462(
6463 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6464)
6465{
6466
6467 WDI_EventInfoType wdiEventData;
6468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6469
6470 /*------------------------------------------------------------------------
6471 Sanity Check
6472 ------------------------------------------------------------------------*/
6473 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6474 {
6475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6476 "WDI API call before module is initialized - Fail request");
6477
6478 return WDI_STATUS_E_NOT_ALLOWED;
6479 }
6480
6481 /*------------------------------------------------------------------------
6482 Fill in Event data and post to the Main FSM
6483 ------------------------------------------------------------------------*/
6484 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6485 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6486 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6487 wdiEventData.pCBfnc = NULL;
6488 wdiEventData.pUserData = NULL;
6489
6490 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6491
6492}/*WDI_TrafficStatsInd*/
6493
Chet Lanctot186b5732013-03-18 10:26:30 -07006494#ifdef WLAN_FEATURE_11W
6495/**
6496 @brief WDI_ExcludeUnencryptedInd
6497 Register with HAL to receive/drop unencrypted frames
6498
6499 @param WDI_ExcludeUnencryptIndType
6500
6501 @see
6502
6503 @return Status of the request
6504*/
6505WDI_Status
6506WDI_ExcludeUnencryptedInd
6507(
6508 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6509)
6510{
6511
6512 WDI_EventInfoType wdiEventData;
6513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6514
6515 /*------------------------------------------------------------------------
6516 Sanity Check
6517 ------------------------------------------------------------------------*/
6518 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6519 {
6520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6521 "WDI API call before module is initialized - Fail request");
6522
6523 return WDI_STATUS_E_NOT_ALLOWED;
6524 }
6525
6526 /*------------------------------------------------------------------------
6527 Fill in Event data and post to the Main FSM
6528 ------------------------------------------------------------------------*/
6529 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6530 wdiEventData.pEventData = pWdiExcUnencParams;
6531 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6532 wdiEventData.pCBfnc = NULL;
6533 wdiEventData.pUserData = NULL;
6534
6535 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6536
6537}/*WDI_TrafficStatsInd*/
6538#endif
6539
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006540/**
Yue Mab9c86f42013-08-14 15:59:08 -07006541 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6542
6543 @param addPeriodicTxPtrnParams: Add Pattern parameters
6544
6545 @see
6546
6547 @return Status of the request
6548*/
6549WDI_Status
6550WDI_AddPeriodicTxPtrnInd
6551(
6552 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6553)
6554{
6555 WDI_EventInfoType wdiEventData;
6556
6557 /*-------------------------------------------------------------------------
6558 Sanity Check
6559 ------------------------------------------------------------------------*/
6560 if (eWLAN_PAL_FALSE == gWDIInitialized)
6561 {
6562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6563 "WDI API call before module is initialized - Fail request!");
6564
6565 return WDI_STATUS_E_NOT_ALLOWED;
6566 }
6567
6568 /*-------------------------------------------------------------------------
6569 Fill in Event data and post to the Main FSM
6570 ------------------------------------------------------------------------*/
6571 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6572 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6573 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6574 wdiEventData.pCBfnc = NULL;
6575 wdiEventData.pUserData = NULL;
6576
6577 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6578}
6579
6580/**
6581 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6582
6583 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6584
6585 @see
6586
6587 @return Status of the request
6588*/
6589WDI_Status
6590WDI_DelPeriodicTxPtrnInd
6591(
6592 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6593)
6594{
6595 WDI_EventInfoType wdiEventData;
6596
6597 /*-------------------------------------------------------------------------
6598 Sanity Check
6599 ------------------------------------------------------------------------*/
6600 if (eWLAN_PAL_FALSE == gWDIInitialized)
6601 {
6602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6603 "WDI API call before module is initialized - Fail request!");
6604
6605 return WDI_STATUS_E_NOT_ALLOWED;
6606 }
6607
6608 /*-------------------------------------------------------------------------
6609 Fill in Event data and post to the Main FSM
6610 ------------------------------------------------------------------------*/
6611 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6612 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6613 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6614 wdiEventData.pCBfnc = NULL;
6615 wdiEventData.pUserData = NULL;
6616
6617 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6618}
6619
6620/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006621 @brief WDI_HALDumpCmdReq
6622 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006623
6624 @param halDumpCmdReqParams: Hal Dump Command Body
6625 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006626 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006627
Jeff Johnson295189b2012-06-20 16:38:30 -07006628 @see
6629 @return Result of the function call
6630*/
6631WDI_Status WDI_HALDumpCmdReq
6632(
6633 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6634 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6635 void *pUserData
6636)
6637{
6638 WDI_EventInfoType wdiEventData;
6639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6640
6641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006642 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006643 ------------------------------------------------------------------------*/
6644 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6645 {
6646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6647 "WDI API call before module is initialized - Fail request");
6648
Jeff Johnsone7245742012-09-05 17:12:55 -07006649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006650 }
6651
6652 /*------------------------------------------------------------------------
6653 Fill in Event data and post to the Main FSM
6654 ------------------------------------------------------------------------*/
6655 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6656 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6657 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6658 wdiEventData.pCBfnc = halDumpCmdRspCb;
6659 wdiEventData.pUserData = pUserData;
6660
6661 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6662}
6663
Jeff Johnsone7245742012-09-05 17:12:55 -07006664/*============================================================================
6665
Jeff Johnson295189b2012-06-20 16:38:30 -07006666 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006667
Jeff Johnson295189b2012-06-20 16:38:30 -07006668 ============================================================================*/
6669
6670/**
6671 @brief Main FSM Start function for all states except BUSY
6672
Jeff Johnsone7245742012-09-05 17:12:55 -07006673
6674 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006675 wdiEV: event posted to the main DAL FSM
6676 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006677 structure
6678
Jeff Johnson295189b2012-06-20 16:38:30 -07006679 @see
6680 @return Result of the function call
6681*/
6682WDI_Status
6683WDI_PostMainEvent
6684(
Jeff Johnsone7245742012-09-05 17:12:55 -07006685 WDI_ControlBlockType* pWDICtx,
6686 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006687 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006688)
6689{
Jeff Johnsone7245742012-09-05 17:12:55 -07006690 WDI_Status wdiStatus;
6691 WDI_MainFuncType pfnWDIMainEvHdlr;
6692 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6694
6695 /*-------------------------------------------------------------------------
6696 Sanity check
6697 -------------------------------------------------------------------------*/
6698 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6699 ( wdiEV >= WDI_MAX_EVENT ))
6700 {
6701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6702 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6703 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006705 }
6706
6707 /*Access to the global state must be locked */
6708 wpalMutexAcquire(&pWDICtx->wptMutex);
6709
6710 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006711 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006712
6713 wdiOldState = pWDICtx->uGlobalState;
6714
6715 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006716 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6717 response comes from CCPU for the request sent by host:
6718 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 -07006719 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 -07006720 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006721 CCPU:
6722 don't change the state */
6723 if ( WDI_RESPONSE_EVENT != wdiEV)
6724 {
6725 /*Transition to BUSY State - the request is now being processed by the FSM,
6726 if the request fails we shall transition back to the old state, if not
6727 the request will manage its own state transition*/
6728 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6729 }
6730 /* If the state function associated with the EV is NULL it means that this
6731 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006732 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006733 {
6734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006735 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006736 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006737 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006738 }
6739 else
6740 {
6741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006742 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006744 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 }
6746
6747 /* If a request handles itself well it will end up in a success or in a
6748 pending
6749 Success - means that the request was processed and the proper state
6750 transition already occurred or will occur when the resp is received
6751 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006752
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 Pending - means the request could not be processed at this moment in time
6754 because the FSM was already busy so no state transition or dequeueing
6755 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006756
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 Success for synchronous case means that the transition may occur and
6758 processing of pending requests may continue - so it should go through
6759 and restores the state and continue processing queued requests*/
6760 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6761 ( WDI_STATUS_PENDING != wdiStatus ))
6762 {
6763 if ( WDI_RESPONSE_EVENT != wdiEV)
6764 {
6765 /*The request has failed or could not be processed - transition back to
6766 the old state - check to see if anything was queued and try to execute
6767 The dequeue logic should post a message to a thread and return - no
6768 actual processing can occur */
6769 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6770 }
6771 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006772
Jeff Johnson295189b2012-06-20 16:38:30 -07006773 }
6774
6775 /* we have completed processing the event */
6776 wpalMutexRelease(&pWDICtx->wptMutex);
6777
Jeff Johnsone7245742012-09-05 17:12:55 -07006778 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006779
6780}/*WDI_PostMainEvent*/
6781
6782
6783/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006784 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006785--------------------------------------------------------------------------*/
6786/**
6787 @brief Main FSM Start function for all states except BUSY
6788
Jeff Johnsone7245742012-09-05 17:12:55 -07006789
6790 @param pWDICtx: pointer to the WLAN DAL context
6791 pEventData: pointer to the event information structure
6792
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 @see
6794 @return Result of the function call
6795*/
6796WDI_Status
6797WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006798(
Jeff Johnson295189b2012-06-20 16:38:30 -07006799 WDI_ControlBlockType* pWDICtx,
6800 WDI_EventInfoType* pEventData
6801)
6802{
6803
6804 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006805 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006806 ----------------------------------------------------------------------*/
6807 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6808 {
6809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006810 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006811 pWDICtx, pEventData);
6812 return WDI_STATUS_E_FAILURE;
6813 }
6814
6815 wpalMutexAcquire(&pWDICtx->wptMutex);
6816
6817 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006818 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006819 ----------------------------------------------------------------------*/
6820 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6821 {
6822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6823 "Control Transport not yet Open - queueing the request");
6824
6825 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006826 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006827
6828 wpalMutexRelease(&pWDICtx->wptMutex);
6829 return WDI_STATUS_PENDING;
6830 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006831
Jeff Johnson295189b2012-06-20 16:38:30 -07006832 wpalMutexRelease(&pWDICtx->wptMutex);
6833
6834 /*Return Success*/
6835 return WDI_ProcessRequest( pWDICtx, pEventData );
6836
6837}/*WDI_MainStart*/
6838
6839/**
6840 @brief Main FSM Response function for state INIT
6841
Jeff Johnsone7245742012-09-05 17:12:55 -07006842
6843 @param pWDICtx: pointer to the WLAN DAL context
6844 pEventData: pointer to the event information structure
6845
Jeff Johnson295189b2012-06-20 16:38:30 -07006846 @see
6847 @return Result of the function call
6848*/
6849WDI_Status
6850WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006851(
Jeff Johnson295189b2012-06-20 16:38:30 -07006852 WDI_ControlBlockType* pWDICtx,
6853 WDI_EventInfoType* pEventData
6854)
6855{
6856 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006857 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006858 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006859 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006860
6861 /*Return Success*/
6862 return WDI_STATUS_E_NOT_ALLOWED;
6863}/* WDI_MainRspInit */
6864
6865/**
6866 @brief Main FSM Close function for all states except BUSY
6867
Jeff Johnsone7245742012-09-05 17:12:55 -07006868
6869 @param pWDICtx: pointer to the WLAN DAL context
6870 pEventData: pointer to the event information structure
6871
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 @see
6873 @return Result of the function call
6874*/
6875WDI_Status
6876WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006877(
Jeff Johnson295189b2012-06-20 16:38:30 -07006878 WDI_ControlBlockType* pWDICtx,
6879 WDI_EventInfoType* pEventData
6880)
6881{
6882
6883 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006884 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006885 ----------------------------------------------------------------------*/
6886 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6887 {
6888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006889 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 pWDICtx, pEventData);
6891 return WDI_STATUS_E_FAILURE;
6892 }
6893
6894 /*Return Success*/
6895 return WDI_ProcessRequest( pWDICtx, pEventData );
6896
6897}/*WDI_MainClose*/
6898/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006899 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006900--------------------------------------------------------------------------*/
6901/**
6902 @brief Main FSM Start function for state STARTED
6903
Jeff Johnsone7245742012-09-05 17:12:55 -07006904
6905 @param pWDICtx: pointer to the WLAN DAL context
6906 pEventData: pointer to the event information structure
6907
Jeff Johnson295189b2012-06-20 16:38:30 -07006908 @see
6909 @return Result of the function call
6910*/
6911WDI_Status
6912WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006913(
Jeff Johnson295189b2012-06-20 16:38:30 -07006914 WDI_ControlBlockType* pWDICtx,
6915 WDI_EventInfoType* pEventData
6916)
6917{
6918 WDI_StartRspCb wdiStartRspCb = NULL;
6919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6920
6921 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006922 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006923 ----------------------------------------------------------------------*/
6924 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6925 {
6926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006927 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006928 pWDICtx, pEventData);
6929 return WDI_STATUS_E_FAILURE;
6930 }
6931
6932 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006933 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006934 ----------------------------------------------------------------------*/
6935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006936 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006937
6938 wpalMutexAcquire(&pWDICtx->wptMutex);
6939
6940 /*Transition back to started because the post function transitioned us to
6941 busy*/
6942 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6943
6944 /*Check to see if any request is pending*/
6945 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006946
Jeff Johnson295189b2012-06-20 16:38:30 -07006947 wpalMutexRelease(&pWDICtx->wptMutex);
6948
6949 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006950 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6951
Jeff Johnson295189b2012-06-20 16:38:30 -07006952 /*Notify UMAC*/
6953 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6954
6955 /*Return Success*/
6956 return WDI_STATUS_SUCCESS;
6957
6958}/*WDI_MainStartStarted*/
6959
6960/**
6961 @brief Main FSM Stop function for state STARTED
6962
Jeff Johnsone7245742012-09-05 17:12:55 -07006963
6964 @param pWDICtx: pointer to the WLAN DAL context
6965 pEventData: pointer to the event information structure
6966
Jeff Johnson295189b2012-06-20 16:38:30 -07006967 @see
6968 @return Result of the function call
6969*/
6970WDI_Status
6971WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006972(
Jeff Johnson295189b2012-06-20 16:38:30 -07006973 WDI_ControlBlockType* pWDICtx,
6974 WDI_EventInfoType* pEventData
6975)
6976{
6977 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006978 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006979 ----------------------------------------------------------------------*/
6980 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6981 {
6982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006983 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 pWDICtx, pEventData);
6985 return WDI_STATUS_E_FAILURE;
6986 }
6987
6988 /*State at this point is BUSY - because we enter this state before posting
6989 an event to the FSM in order to prevent potential race conditions*/
6990
6991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6992 "Processing stop request in FSM");
6993
6994 /*Return Success*/
6995 return WDI_ProcessRequest( pWDICtx, pEventData );
6996
6997}/*WDI_MainStopStarted*/
6998/**
6999 @brief Main FSM Request function for state started
7000
Jeff Johnsone7245742012-09-05 17:12:55 -07007001
7002 @param pWDICtx: pointer to the WLAN DAL context
7003 pEventData: pointer to the event information structure
7004
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 @see
7006 @return Result of the function call
7007*/
7008WDI_Status
7009WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007010(
Jeff Johnson295189b2012-06-20 16:38:30 -07007011 WDI_ControlBlockType* pWDICtx,
7012 WDI_EventInfoType* pEventData
7013)
7014{
7015
7016 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007017 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 ----------------------------------------------------------------------*/
7019 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7020 {
7021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007022 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 pWDICtx, pEventData);
7024 return WDI_STATUS_E_FAILURE;
7025 }
7026
7027 /*State at this point is BUSY - because we enter this state before posting
7028 an event to the FSM in order to prevent potential race conditions*/
7029
7030 /*Return Success*/
7031 return WDI_ProcessRequest( pWDICtx, pEventData );
7032
7033}/*WDI_MainReqStarted*/
7034
7035/**
7036 @brief Main FSM Response function for all states except INIT
7037
Jeff Johnsone7245742012-09-05 17:12:55 -07007038
7039 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007040 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007041
Jeff Johnson295189b2012-06-20 16:38:30 -07007042 @see
7043 @return Result of the function call
7044*/
7045WDI_Status
7046WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007047(
Jeff Johnson295189b2012-06-20 16:38:30 -07007048 WDI_ControlBlockType* pWDICtx,
7049 WDI_EventInfoType* pEventData
7050)
7051{
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 wpt_boolean expectedResponse;
7054
7055 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007056 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007057 ----------------------------------------------------------------------*/
7058 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7059 {
7060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007061 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 pWDICtx, pEventData);
7063 return WDI_STATUS_E_FAILURE;
7064 }
7065
7066 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7067 {
7068 /* we received an expected response */
7069 expectedResponse = eWLAN_PAL_TRUE;
7070
7071 /*We expect that we will transition to started after this processing*/
7072 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7073
7074 /* we are no longer expecting a response */
7075 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7076 }
7077 else
7078 {
7079 /* we received an indication or unexpected response */
7080 expectedResponse = eWLAN_PAL_FALSE;
7081 /* for indications no need to update state from what it is right
7082 now, unless it explicitly does it in the indication handler (say
7083 for device failure ind) */
7084 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7085 }
7086
7087 /*Process the response and indication */
7088 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7089
7090 /*Lock the CB as we are about to do a state transition*/
7091 wpalMutexAcquire(&pWDICtx->wptMutex);
7092
7093 /*Transition to the expected state after the response processing
7094 - this should always be started state with the following exceptions:
7095 1. processing of a failed start response
7096 2. device failure detected while processing response
7097 3. stop response received*/
7098 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007099
Jeff Johnson295189b2012-06-20 16:38:30 -07007100 /*Dequeue request that may have been queued while we were waiting for the
7101 response */
7102 if ( expectedResponse )
7103 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007104 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007105 }
7106
7107 wpalMutexRelease(&pWDICtx->wptMutex);
7108
7109 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007110 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007111
7112}/*WDI_MainRsp*/
7113
7114/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007115 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007116--------------------------------------------------------------------------*/
7117/**
7118 @brief Main FSM Stop function for state STOPPED
7119
Jeff Johnsone7245742012-09-05 17:12:55 -07007120
7121 @param pWDICtx: pointer to the WLAN DAL context
7122 pEventData: pointer to the event information structure
7123
Jeff Johnson295189b2012-06-20 16:38:30 -07007124 @see
7125 @return Result of the function call
7126*/
7127WDI_Status
7128WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007129(
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 WDI_ControlBlockType* pWDICtx,
7131 WDI_EventInfoType* pEventData
7132)
7133{
7134 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007135 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007136 ----------------------------------------------------------------------*/
7137 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7138 {
7139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007140 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007141 pWDICtx, pEventData);
7142 return WDI_STATUS_E_FAILURE;
7143 }
7144
7145 /*We should normally not get a STOP request if we are already stopped
7146 since we should normally be stopped by the UMAC. However in some
7147 error situations we put ourselves in the stopped state without the
7148 UMAC knowing, so when we get a STOP request in this state we still
7149 process it since we need to clean up the underlying state */
7150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7151 "Processing stop request while stopped in FSM");
7152
7153 /*Return Success*/
7154 return WDI_ProcessRequest( pWDICtx, pEventData );
7155
7156}/*WDI_MainStopStopped*/
7157
7158/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007159 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007160--------------------------------------------------------------------------*/
7161/**
7162 @brief Main FSM Start function for state BUSY
7163
Jeff Johnsone7245742012-09-05 17:12:55 -07007164
7165 @param pWDICtx: pointer to the WLAN DAL context
7166 pEventData: pointer to the event information structure
7167
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 @see
7169 @return Result of the function call
7170*/
7171WDI_Status
7172WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007173(
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 WDI_ControlBlockType* pWDICtx,
7175 WDI_EventInfoType* pEventData
7176)
7177{
7178 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007179 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 ----------------------------------------------------------------------*/
7181 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7182 {
7183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007184 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007185 pWDICtx, pEventData);
7186 return WDI_STATUS_E_FAILURE;
7187 }
7188
7189 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 ----------------------------------------------------------------------*/
7192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7193 "WDI Busy state - queue start request");
7194
7195 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007197
7198 /*Return Success*/
7199 return WDI_STATUS_PENDING;
7200}/*WDI_MainStartBusy*/
7201
7202/**
7203 @brief Main FSM Stop function for state BUSY
7204
Jeff Johnsone7245742012-09-05 17:12:55 -07007205
7206 @param pWDICtx: pointer to the WLAN DAL context
7207 pEventData: pointer to the event information structure
7208
Jeff Johnson295189b2012-06-20 16:38:30 -07007209 @see
7210 @return Result of the function call
7211*/
7212WDI_Status
7213WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007214(
Jeff Johnson295189b2012-06-20 16:38:30 -07007215 WDI_ControlBlockType* pWDICtx,
7216 WDI_EventInfoType* pEventData
7217)
7218{
7219 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 ----------------------------------------------------------------------*/
7222 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7223 {
7224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007225 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 pWDICtx, pEventData);
7227 return WDI_STATUS_E_FAILURE;
7228 }
7229
7230 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 ----------------------------------------------------------------------*/
7233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7234 "WDI Busy state - queue stop request");
7235
Jeff Johnsone7245742012-09-05 17:12:55 -07007236 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007237 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007238
Jeff Johnson295189b2012-06-20 16:38:30 -07007239}/*WDI_MainStopBusy*/
7240
7241/**
7242 @brief Main FSM Request function for state BUSY
7243
Jeff Johnsone7245742012-09-05 17:12:55 -07007244
7245 @param pWDICtx: pointer to the WLAN DAL context
7246 pEventData: pointer to the event information structure
7247
Jeff Johnson295189b2012-06-20 16:38:30 -07007248 @see
7249 @return Result of the function call
7250*/
7251WDI_Status
7252WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007253(
Jeff Johnson295189b2012-06-20 16:38:30 -07007254 WDI_ControlBlockType* pWDICtx,
7255 WDI_EventInfoType* pEventData
7256)
7257{
7258 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 ----------------------------------------------------------------------*/
7261 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7262 {
7263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007264 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007265 pWDICtx, pEventData);
7266 return WDI_STATUS_E_FAILURE;
7267 }
7268
7269 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007270 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 ----------------------------------------------------------------------*/
7272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7273 "WDI Busy state - queue request %d because waiting for response %d",
7274 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7275
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007278
Jeff Johnson295189b2012-06-20 16:38:30 -07007279}/*WDI_MainReqBusy*/
7280/**
7281 @brief Main FSM Close function for state BUSY
7282
Jeff Johnsone7245742012-09-05 17:12:55 -07007283
7284 @param pWDICtx: pointer to the WLAN DAL context
7285 pEventData: pointer to the event information structure
7286
Jeff Johnson295189b2012-06-20 16:38:30 -07007287 @see
7288 @return Result of the function call
7289*/
7290WDI_Status
7291WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007292(
Jeff Johnson295189b2012-06-20 16:38:30 -07007293 WDI_ControlBlockType* pWDICtx,
7294 WDI_EventInfoType* pEventData
7295)
7296{
7297 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007298 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 ----------------------------------------------------------------------*/
7300 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7301 {
7302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007303 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007304 pWDICtx, pEventData);
7305 return WDI_STATUS_E_FAILURE;
7306 }
7307
7308 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007309 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007310 ----------------------------------------------------------------------*/
7311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7312 "WDI Busy state - queue close request");
7313
Jeff Johnsone7245742012-09-05 17:12:55 -07007314 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007316
Jeff Johnson295189b2012-06-20 16:38:30 -07007317}/*WDI_MainCloseBusy*/
7318
7319/**
7320 @brief Main FSM Shutdown function for INIT & STARTED states
7321
7322
7323 @param pWDICtx: pointer to the WLAN DAL context
7324 pEventData: pointer to the event information structure
7325
7326 @see
7327 @return Result of the function call
7328*/
7329WDI_Status
7330WDI_MainShutdown
7331(
7332 WDI_ControlBlockType* pWDICtx,
7333 WDI_EventInfoType* pEventData
7334)
7335{
7336 /*--------------------------------------------------------------------
7337 Sanity Check
7338 ----------------------------------------------------------------------*/
7339 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7340 {
7341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007342 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 pWDICtx, pEventData);
7344 return WDI_STATUS_E_FAILURE;
7345 }
7346
7347 /*State at this point is BUSY - because we enter this state before posting
7348 an event to the FSM in order to prevent potential race conditions*/
7349
7350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7351 "Processing shutdown request in FSM");
7352
7353 /*Return Success*/
7354 return WDI_ProcessRequest( pWDICtx, pEventData );
7355
7356}/*WDI_MainShutdown*/
7357
7358/**
7359 @brief Main FSM Shutdown function for BUSY state
7360
7361
7362 @param pWDICtx: pointer to the WLAN DAL context
7363 pEventData: pointer to the event information structure
7364
7365 @see
7366 @return Result of the function call
7367*/
7368WDI_Status
7369WDI_MainShutdownBusy
7370(
7371 WDI_ControlBlockType* pWDICtx,
7372 WDI_EventInfoType* pEventData
7373)
7374{
7375 /*--------------------------------------------------------------------
7376 Sanity Check
7377 ----------------------------------------------------------------------*/
7378 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7379 {
7380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007381 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 pWDICtx, pEventData);
7383 return WDI_STATUS_E_FAILURE;
7384 }
7385
7386 /* If you are waiting for a HAL response at this stage, you are not
7387 * going to get it. Riva is already shutdown/crashed.
7388 */
7389 wpalTimerStop(&gWDICb.wptResponseTimer);
7390
7391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7392 "Processing shutdown request in FSM: Busy state ");
7393
7394 return WDI_ProcessRequest( pWDICtx, pEventData );
7395
7396}/*WDI_MainShutdownBusy*/
7397
7398
Jeff Johnsone7245742012-09-05 17:12:55 -07007399/*=======================================================================
7400
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007402
Jeff Johnson295189b2012-06-20 16:38:30 -07007403*=======================================================================*/
7404
7405/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007406 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007407========================================================================*/
7408/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007411
7412 @param pWDICtx: pointer to the WLAN DAL context
7413 pEventData: pointer to the event information structure
7414
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 @see
7416 @return Result of the function call
7417*/
7418WDI_Status
7419WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007420(
Jeff Johnson295189b2012-06-20 16:38:30 -07007421 WDI_ControlBlockType* pWDICtx,
7422 WDI_EventInfoType* pEventData
7423)
7424{
7425 WDI_StartReqParamsType* pwdiStartParams = NULL;
7426 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 wpt_uint16 usDataOffset = 0;
7429 wpt_uint16 usSendSize = 0;
7430
Jeff Johnsone7245742012-09-05 17:12:55 -07007431 tHalMacStartReqMsg halStartReq;
7432 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7434
7435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 -------------------------------------------------------------------------*/
7438 if (( NULL == pEventData ) ||
7439 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7440 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7441 {
7442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 }
7447
7448 /*-----------------------------------------------------------------------
7449 Get message buffer
7450 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007451 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 pwdiStartParams->usConfigBufferLen;
7453
Jeff Johnsone7245742012-09-05 17:12:55 -07007454 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 usLen,
7456 &pSendBuffer, &usDataOffset, &usSendSize))||
7457 ( usSendSize < (usDataOffset + usLen )))
7458 {
7459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007460 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 pEventData, pwdiStartParams, wdiStartRspCb);
7462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007464 }
7465
7466 /*-----------------------------------------------------------------------
7467 Fill in the message
7468 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 halStartReq.startReqParams.driverType =
7470 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007471
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 halStartReq.startReqParams.uConfigBufferLen =
7473 pwdiStartParams->usConfigBufferLen;
7474 wpalMemoryCopy( pSendBuffer+usDataOffset,
7475 &halStartReq.startReqParams,
7476 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007477
Jeff Johnsone7245742012-09-05 17:12:55 -07007478 usDataOffset += sizeof(halStartReq.startReqParams);
7479 wpalMemoryCopy( pSendBuffer+usDataOffset,
7480 pwdiStartParams->pConfigBuffer,
7481 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007482
7483 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007485
7486 /*Save Low Level Ind CB and associated user data - it will be used further
7487 on when an indication is coming from the lower MAC*/
7488 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007489 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007490
Jeff Johnsone7245742012-09-05 17:12:55 -07007491 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007493 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7497
Jeff Johnsone7245742012-09-05 17:12:55 -07007498
Jeff Johnson295189b2012-06-20 16:38:30 -07007499}/*WDI_ProcessStartReq*/
7500
7501/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007504
7505 @param pWDICtx: pointer to the WLAN DAL context
7506 pEventData: pointer to the event information structure
7507
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 @see
7509 @return Result of the function call
7510*/
7511WDI_Status
7512WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007513(
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 WDI_ControlBlockType* pWDICtx,
7515 WDI_EventInfoType* pEventData
7516)
7517{
7518 WDI_StopReqParamsType* pwdiStopParams = NULL;
7519 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007520 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007521 wpt_uint16 usDataOffset = 0;
7522 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007523 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007524 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7526
7527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007529 -------------------------------------------------------------------------*/
7530 if (( NULL == pEventData ) ||
7531 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7532 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7533 {
7534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007535 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007536 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007537 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007538 }
7539
7540 /*-----------------------------------------------------------------------
7541 Get message buffer
7542 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007543 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007544 sizeof(halStopReq.stopReqParams),
7545 &pSendBuffer, &usDataOffset, &usSendSize))||
7546 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7547 {
7548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007549 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 pEventData, pwdiStopParams, wdiStopRspCb);
7551 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007552 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007553 }
7554
7555 /*-----------------------------------------------------------------------
7556 Fill in the message
7557 -----------------------------------------------------------------------*/
7558 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7559 pwdiStopParams->wdiStopReason);
7560
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 wpalMemoryCopy( pSendBuffer+usDataOffset,
7562 &halStopReq.stopReqParams,
7563 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007564
7565 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007566 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007567
7568 /*! TO DO: stop the data services */
7569 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7570 {
7571 /*Stop the STA Table !UT- check this logic again
7572 It is safer to do it here than on the response - because a stop is imminent*/
7573 WDI_STATableStop(pWDICtx);
7574
7575 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007576 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7577 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 {
7579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7580 "WDI Init failed to reset power state event");
7581
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007583 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 }
7585 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007586 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7587 if( eWLAN_PAL_STATUS_SUCCESS != status )
7588 {
7589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007590 "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 -08007591 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007592 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007593 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007597 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7598 WDI_SET_POWER_STATE_TIMEOUT);
7599 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007600 {
7601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7602 "WDI Init failed to wait on an event");
7603
Jeff Johnsone7245742012-09-05 17:12:55 -07007604 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007605 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 }
7607 }
7608
7609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007610 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007613 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7614
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007615fail:
7616 // Release the message buffer so we don't leak
7617 wpalMemoryFree(pSendBuffer);
7618
7619failRequest:
7620 //WDA should have failure check to avoid the memory leak
7621 return WDI_STATUS_E_FAILURE;
7622
Jeff Johnson295189b2012-06-20 16:38:30 -07007623}/*WDI_ProcessStopReq*/
7624
7625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007628
7629 @param pWDICtx: pointer to the WLAN DAL context
7630 pEventData: pointer to the event information structure
7631
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 @see
7633 @return Result of the function call
7634*/
7635WDI_Status
7636WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007637(
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 WDI_ControlBlockType* pWDICtx,
7639 WDI_EventInfoType* pEventData
7640)
7641{
Jeff Johnsone7245742012-09-05 17:12:55 -07007642 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7644
7645 /*Lock control block for cleanup*/
7646 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007647
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 /*Clear all pending request*/
7649 WDI_ClearPendingRequests(pWDICtx);
7650
7651 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007653
7654 /* Close Data transport*/
7655 /* FTM mode does not open Data Path */
7656 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7657 {
7658 WDTS_Close(pWDICtx);
7659 }
7660
7661 /*Close the STA Table !UT- check this logic again*/
7662 WDI_STATableClose(pWDICtx);
7663
7664 /*close the PAL */
7665 wptStatus = wpalClose(pWDICtx->pPALContext);
7666 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7667 {
7668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7669 "Failed to wpal Close %d", wptStatus);
7670 WDI_ASSERT(0);
7671 }
7672
7673 /*Transition back to init state*/
7674 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7675
7676 wpalMutexRelease(&pWDICtx->wptMutex);
7677
7678 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007680
Jeff Johnsone7245742012-09-05 17:12:55 -07007681 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007682}/*WDI_ProcessCloseReq*/
7683
7684
7685/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007687===========================================================================*/
7688
7689/**
7690 @brief Process Init Scan Request function (called when Main FSM
7691 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007692
7693 @param pWDICtx: pointer to the WLAN DAL context
7694 pEventData: pointer to the event information structure
7695
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 @see
7697 @return Result of the function call
7698*/
7699WDI_Status
7700WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007701(
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 WDI_ControlBlockType* pWDICtx,
7703 WDI_EventInfoType* pEventData
7704)
7705{
7706 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7707 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007709 wpt_uint16 usDataOffset = 0;
7710 wpt_uint16 usSendSize = 0;
7711 wpt_uint8 i = 0;
7712
7713 tHalInitScanReqMsg halInitScanReqMsg;
7714
Jeff Johnsone7245742012-09-05 17:12:55 -07007715 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 * It shold be removed once host and riva changes are in sync*/
7717 tHalInitScanConReqMsg halInitScanConReqMsg;
7718
7719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7720
7721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 -------------------------------------------------------------------------*/
7724 if (( NULL == pEventData ) ||
7725 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7726 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7727 {
7728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 }
7733
7734#if 0
7735 wpalMutexAcquire(&pWDICtx->wptMutex);
7736 /*-----------------------------------------------------------------------
7737 Check to see if SCAN is already in progress - if so reject the req
7738 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 -----------------------------------------------------------------------*/
7741 if ( pWDICtx->bScanInProgress )
7742 {
7743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7744 "Scan is already in progress - subsequent scan is not allowed"
7745 " until the first scan completes");
7746
7747 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 }
7750
Jeff Johnsone7245742012-09-05 17:12:55 -07007751 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7752 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007753
7754 wpalMutexRelease(&pWDICtx->wptMutex);
7755#endif
Viral Modid86bde22012-12-10 13:09:21 -08007756 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 * It shold be removed once host and riva changes are in sync*/
7760 /*-----------------------------------------------------------------------
7761 Get message buffer
7762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007764 sizeof(halInitScanConReqMsg.initScanParams),
7765 &pSendBuffer, &usDataOffset, &usSendSize))||
7766 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7767 {
7768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007769 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 }
7774
7775
7776 /*-----------------------------------------------------------------------
7777 Fill in the message
7778 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007779 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007780 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7781
7782 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7783 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7784
Jeff Johnsone7245742012-09-05 17:12:55 -07007785 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007787 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007790 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7791
7792 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7793 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7794
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7796 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007797
Jeff Johnsone7245742012-09-05 17:12:55 -07007798 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007799 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7800
7801 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7802 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007803 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007804 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7805 }
7806
Jeff Johnsone7245742012-09-05 17:12:55 -07007807 wpalMemoryCopy( pSendBuffer+usDataOffset,
7808 &halInitScanConReqMsg.initScanParams,
7809 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 }
7811 else
7812 {
7813 /*-----------------------------------------------------------------------
7814 Get message buffer
7815 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007816 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007817 sizeof(halInitScanReqMsg.initScanParams),
7818 &pSendBuffer, &usDataOffset, &usSendSize))||
7819 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7820 {
7821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007822 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007823 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007826 }
7827
7828
7829 /*-----------------------------------------------------------------------
7830 Fill in the message
7831 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7834
7835 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7836 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7837
Jeff Johnsone7245742012-09-05 17:12:55 -07007838 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007839 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007842 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7844
7845 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7846 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7847
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7850
7851 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7852 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7855 }
7856
Jeff Johnsone7245742012-09-05 17:12:55 -07007857 wpalMemoryCopy( pSendBuffer+usDataOffset,
7858 &halInitScanReqMsg.initScanParams,
7859 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 }
7861
7862 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007864
7865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007867 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007868 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7870
7871}/*WDI_ProcessInitScanReq*/
7872
7873/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007875 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007876
7877 @param pWDICtx: pointer to the WLAN DAL context
7878 pEventData: pointer to the event information structure
7879
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 @see
7881 @return Result of the function call
7882*/
7883WDI_Status
7884WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007885(
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 WDI_ControlBlockType* pWDICtx,
7887 WDI_EventInfoType* pEventData
7888)
7889{
7890 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7891 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007892 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007893 wpt_uint16 usDataOffset = 0;
7894 wpt_uint16 usSendSize = 0;
7895
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7898
7899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007901 -------------------------------------------------------------------------*/
7902 if (( NULL == pEventData ) ||
7903 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7904 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7905 {
7906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007907 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007910 }
7911
7912#if 0
7913 wpalMutexAcquire(&pWDICtx->wptMutex);
7914 /*-----------------------------------------------------------------------
7915 Check to see if SCAN is already in progress - start scan is only
7916 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007917 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007918 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007919 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007920 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7921 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7922 {
7923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7924 "Scan start not allowed in this state %d %d",
7925 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007926
Jeff Johnson295189b2012-06-20 16:38:30 -07007927 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007929 }
7930
Jeff Johnsone7245742012-09-05 17:12:55 -07007931 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007932
7933 wpalMutexRelease(&pWDICtx->wptMutex);
7934#endif
7935
7936 /*-----------------------------------------------------------------------
7937 Get message buffer
7938 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007939 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007940 sizeof(halStartScanReqMsg.startScanParams),
7941 &pSendBuffer, &usDataOffset, &usSendSize))||
7942 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7943 {
7944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007945 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007949 }
7950
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 wpalMemoryCopy( pSendBuffer+usDataOffset,
7954 &halStartScanReqMsg.startScanParams,
7955 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007956
7957 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007959
7960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007961 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7965}/*WDI_ProcessStartScanReq*/
7966
7967
7968/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007969 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007971
7972 @param pWDICtx: pointer to the WLAN DAL context
7973 pEventData: pointer to the event information structure
7974
Jeff Johnson295189b2012-06-20 16:38:30 -07007975 @see
7976 @return Result of the function call
7977*/
7978WDI_Status
7979WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007980(
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 WDI_ControlBlockType* pWDICtx,
7982 WDI_EventInfoType* pEventData
7983)
7984{
7985 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7986 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007988 wpt_uint16 usDataOffset = 0;
7989 wpt_uint16 usSendSize = 0;
7990
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7993
7994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007996 -------------------------------------------------------------------------*/
7997 if (( NULL == pEventData ) ||
7998 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7999 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8000 {
8001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 }
8006
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8008 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008009 * forwarded to HAL and result in hang*/
8010#if 0
8011 wpalMutexAcquire(&pWDICtx->wptMutex);
8012 /*-----------------------------------------------------------------------
8013 Check to see if SCAN is already in progress - end scan is only
8014 allowed when a scan is ongoing and the state of the scan procedure
8015 is started
8016 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008018 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8019 {
8020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8021 "End start not allowed in this state %d %d",
8022 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008023
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 }
8027
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008029
8030 wpalMutexRelease(&pWDICtx->wptMutex);
8031#endif
8032
8033 /*-----------------------------------------------------------------------
8034 Get message buffer
8035 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 sizeof(halEndScanReqMsg.endScanParams),
8038 &pSendBuffer, &usDataOffset, &usSendSize))||
8039 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8040 {
8041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008042 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008043 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 }
8047
8048 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8049
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 wpalMemoryCopy( pSendBuffer+usDataOffset,
8051 &halEndScanReqMsg.endScanParams,
8052 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008053
8054 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008056
8057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8062}/*WDI_ProcessEndScanReq*/
8063
8064
8065/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008066 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008068
8069 @param pWDICtx: pointer to the WLAN DAL context
8070 pEventData: pointer to the event information structure
8071
Jeff Johnson295189b2012-06-20 16:38:30 -07008072 @see
8073 @return Result of the function call
8074*/
8075WDI_Status
8076WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008077(
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 WDI_ControlBlockType* pWDICtx,
8079 WDI_EventInfoType* pEventData
8080)
8081{
8082 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8083 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008084 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008085 wpt_uint16 usDataOffset = 0;
8086 wpt_uint16 usSendSize = 0;
8087 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008088 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008089 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8091
8092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008093 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 -------------------------------------------------------------------------*/
8095 if (( NULL == pEventData ) ||
8096 ( NULL == pEventData->pEventData) ||
8097 ( NULL == pEventData->pCBfnc))
8098 {
8099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008103 }
8104
8105 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8106 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8108 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 * forwarded to HAL and result in hang*/
8110#if 0
8111 wpalMutexAcquire(&pWDICtx->wptMutex);
8112 /*-----------------------------------------------------------------------
8113 Check to see if SCAN is already in progress
8114 Finish scan gets invoked any scan states. ie. abort scan
8115 It should be allowed in any states.
8116 -----------------------------------------------------------------------*/
8117 if ( !pWDICtx->bScanInProgress )
8118 {
8119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8120 "Finish start not allowed in this state %d",
8121 pWDICtx->bScanInProgress );
8122
8123 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008124 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 }
8126
8127 /*-----------------------------------------------------------------------
8128 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008130 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8132 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008133 wpalMutexRelease(&pWDICtx->wptMutex);
8134#endif
8135
8136 if ( pWDICtx->bInBmps )
8137 {
8138 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008139 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8140 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8141 {
8142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008143 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008144 WDI_ASSERT(0);
8145 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 }
8147
8148 /*-----------------------------------------------------------------------
8149 Get message buffer
8150 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 sizeof(halFinishScanReqMsg.finishScanParams),
8153 &pSendBuffer, &usDataOffset, &usSendSize))||
8154 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8155 {
8156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008157 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008158 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008161 }
8162
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8165
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8168
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008170 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8171
8172 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8173 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8174
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008176 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008177 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008178 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8181
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8184
8185 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8186 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8189 }
8190
8191 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8192 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8193
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 wpalMemoryCopy( pSendBuffer+usDataOffset,
8195 &halFinishScanReqMsg.finishScanParams,
8196 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008197
8198 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008200
8201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008204 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8206}/*WDI_ProcessFinishScanReq*/
8207
8208
8209/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008211==========================================================================*/
8212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 @brief Process BSS Join for a given Session
8214
8215 @param pWDICtx: pointer to the WLAN DAL context
8216 pEventData: pointer to the event information structure
8217
Jeff Johnson295189b2012-06-20 16:38:30 -07008218 @see
8219 @return Result of the function call
8220*/
8221WDI_Status
8222WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008223(
Jeff Johnson295189b2012-06-20 16:38:30 -07008224 WDI_ControlBlockType* pWDICtx,
8225 WDI_JoinReqParamsType* pwdiJoinParams,
8226 WDI_JoinRspCb wdiJoinRspCb,
8227 void* pUserData
8228)
8229{
8230 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008231 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 wpt_uint16 usDataOffset = 0;
8233 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008235
Jeff Johnsone7245742012-09-05 17:12:55 -07008236 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8238
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008239 wpalMutexAcquire(&pWDICtx->wptMutex);
8240
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 /*------------------------------------------------------------------------
8242 Check to see if we have any session with this BSSID already stored, we
8243 should not
8244 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8246 pwdiJoinParams->wdiReqInfo.macBSSID,
8247 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008248
8249 if ( NULL != pBSSSes )
8250 {
8251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008252 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8253 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008254
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008255 /*reset the bAssociationInProgress otherwise the next
8256 *join request will be queued*/
8257 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8258 wpalMutexRelease(&pWDICtx->wptMutex);
8259 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 }
8261
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008264 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 if ( NULL == pBSSSes )
8267 {
8268
8269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8270 "DAL has no free sessions - cannot run another join");
8271
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008272 /*reset the bAssociationInProgress otherwise the next
8273 *join request will be queued*/
8274 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 }
8278
8279 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008280 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8281 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008282 WDI_MAC_ADDR_LEN);
8283
8284 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008285 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008287
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 wpalMutexRelease(&pWDICtx->wptMutex);
8289
8290 /*-----------------------------------------------------------------------
8291 Get message buffer
8292 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008293 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008294 sizeof(halJoinReqMsg.joinReqParams),
8295 &pSendBuffer, &usDataOffset, &usSendSize))||
8296 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8297 {
8298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008299 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 pUserData, pwdiJoinParams, wdiJoinRspCb);
8301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 }
8304
8305 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008306 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008307
8308 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 pwdiJoinParams->wdiReqInfo.macSTASelf,
8310 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008311
Jeff Johnsone7245742012-09-05 17:12:55 -07008312 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008313 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8314
8315 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8316
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008317#ifdef WLAN_FEATURE_VOWIFI
8318 halJoinReqMsg.joinReqParams.maxTxPower =
8319 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8320#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008321 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8323#endif
8324
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008326 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8327 wdiSecondaryChannelOffset);
8328
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 wpalMemoryCopy( pSendBuffer+usDataOffset,
8330 &halJoinReqMsg.joinReqParams,
8331 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008332
8333 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008335
8336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8340 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008341
8342}/*WDI_ProcessBSSSessionJoinReq*/
8343
8344/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008345 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008347
8348 @param pWDICtx: pointer to the WLAN DAL context
8349 pEventData: pointer to the event information structure
8350
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 @see
8352 @return Result of the function call
8353*/
8354WDI_Status
8355WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008356(
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 WDI_ControlBlockType* pWDICtx,
8358 WDI_EventInfoType* pEventData
8359)
8360{
8361 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8362 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8363 WDI_JoinRspCb wdiJoinRspCb = NULL;
8364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8365
8366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 -------------------------------------------------------------------------*/
8369 if (( NULL == pEventData ) ||
8370 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8371 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8372 {
8373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008378
Jeff Johnson295189b2012-06-20 16:38:30 -07008379 /*-------------------------------------------------------------------------
8380 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 -------------------------------------------------------------------------*/
8383 wpalMutexAcquire(&pWDICtx->wptMutex);
8384
8385 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8386 {
8387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8388 "Association is currently in progress, queueing new join req");
8389
8390 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008391 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008392 pwdiJoinParams->wdiReqInfo.macBSSID);
8393
8394 wpalMutexRelease(&pWDICtx->wptMutex);
8395
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 }
8398
8399 /*Starting a new association */
8400 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8401 wpalMutexRelease(&pWDICtx->wptMutex);
8402
8403 /*Process the Join Request*/
8404 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8405 wdiJoinRspCb,pEventData->pUserData);
8406
8407}/*WDI_ProcessJoinReq*/
8408
8409
8410/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008413
8414 @param pWDICtx: pointer to the WLAN DAL context
8415 pEventData: pointer to the event information structure
8416
Jeff Johnson295189b2012-06-20 16:38:30 -07008417 @see
8418 @return Result of the function call
8419*/
8420WDI_Status
8421WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008422(
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 WDI_ControlBlockType* pWDICtx,
8424 WDI_EventInfoType* pEventData
8425)
8426{
8427 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8428 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008429 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008430 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 wpt_uint16 uMsgSize = 0;
8432 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 wpt_uint16 usDataOffset = 0;
8434 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008436
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8439
8440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 -------------------------------------------------------------------------*/
8443 if (( NULL == pEventData ) ||
8444 ( NULL == pEventData->pEventData ) ||
8445 ( NULL == pEventData->pCBfnc ))
8446 {
8447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 }
8452
Abhishek Singh6927fa02014-06-27 17:19:55 +05308453 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8455 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8456 /*-------------------------------------------------------------------------
8457 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 -------------------------------------------------------------------------*/
8460 wpalMutexAcquire(&pWDICtx->wptMutex);
8461
8462 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008463 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008464 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008465 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8466 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8467 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008468
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 {
8471#ifdef WLAN_FEATURE_VOWIFI_11R
8472 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008474 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 if ( NULL == pBSSSes )
8477 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008478
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8480 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008481
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 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008485
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8488 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008490
Jeff Johnson295189b2012-06-20 16:38:30 -07008491 /*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;
8494#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 * Request in case of IBSS*/
8497 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8498 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8499 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8500 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8501 {
8502 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 if ( NULL == pBSSSes )
8507 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008508
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8510 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008511
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008515
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8518 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008520
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008523 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8524 }
8525 else
8526 {
8527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8529 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8530 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8531
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 /* for IBSS testing */
8533 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 }
8536#endif
8537 }
8538
8539 /*------------------------------------------------------------------------
8540 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 ------------------------------------------------------------------------*/
8543 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8544 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8546 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8547 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8548 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008549
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008551
8552 wpalMutexRelease(&pWDICtx->wptMutex);
8553
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008555 }
8556
8557 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8559 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 sizeof(pWDICtx->wdiCachedConfigBssReq));
8561
8562 wpalMutexRelease(&pWDICtx->wptMutex);
8563
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8565#ifdef WLAN_FEATURE_11AC
8566 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008567 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 else
8569#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008570 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008571
8572 /*-----------------------------------------------------------------------
8573 Get message buffer
8574 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008575 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008576 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8577 ( usSendSize < (usDataOffset + uMsgSize )))
8578 {
8579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008580 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008581 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 }
8585
8586 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008587#ifdef WLAN_FEATURE_11AC
8588 if (WDI_getFwWlanFeatCaps(DOT11AC))
8589 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8590 &pwdiConfigBSSParams->wdiReqInfo);
8591 else
8592#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 &pwdiConfigBSSParams->wdiReqInfo);
8595
8596 /* Need to fill in the STA Index to invalid, since at this point we have not
8597 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008599
8600 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8602
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008603#ifdef WLAN_FEATURE_11AC
8604 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8605 wpalMemoryCopy( pSendBuffer+usDataOffset,
8606 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8607 uMsgSize);
8608 }else
8609#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008610 {
8611 if ( uMsgSize <= sizeof(tConfigBssParams) )
8612 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008613 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008614 &halConfigBssReqMsg.uBssParams.configBssParams,
8615 uMsgSize);
8616 }
8617 else
8618 {
8619 return WDI_STATUS_E_FAILURE;
8620 }
8621 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008622
8623 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008624 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308625 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8630 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 WDI_CONFIG_BSS_RESP);
8632
8633}/*WDI_ProcessConfigBSSReq*/
8634
8635
8636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008639
8640 @param pWDICtx: pointer to the WLAN DAL context
8641 pEventData: pointer to the event information structure
8642
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 @see
8644 @return Result of the function call
8645*/
8646WDI_Status
8647WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008648(
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 WDI_ControlBlockType* pWDICtx,
8650 WDI_EventInfoType* pEventData
8651)
8652{
8653 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8654 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008655 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008657 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008658 wpt_uint16 usDataOffset = 0;
8659 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008661
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8664
8665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008666 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008667 -------------------------------------------------------------------------*/
8668 if (( NULL == pEventData ) ||
8669 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8670 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8671 {
8672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 }
8677
8678 /*-------------------------------------------------------------------------
8679 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 -------------------------------------------------------------------------*/
8682 wpalMutexAcquire(&pWDICtx->wptMutex);
8683
8684 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8688 pwdiDelBSSParams->ucBssIdx,
8689 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008690
Jeff Johnsone7245742012-09-05 17:12:55 -07008691 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008692 {
8693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008694 "%s: BSS does not yet exist. ucBssIdx %d",
8695 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008696
8697 wpalMutexRelease(&pWDICtx->wptMutex);
8698
8699 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008700 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008701
8702 /*------------------------------------------------------------------------
8703 Check if this BSS is being currently processed or queued,
8704 if queued - queue the new request as well
8705 ------------------------------------------------------------------------*/
8706 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8709 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8710 __func__, pwdiDelBSSParams->ucBssIdx);
8711
8712 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8713
8714 wpalMutexRelease(&pWDICtx->wptMutex);
8715
8716 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008718
Jeff Johnson295189b2012-06-20 16:38:30 -07008719 /*-----------------------------------------------------------------------
8720 If we receive a Del BSS request for an association that is already in
8721 progress, it indicates that the assoc has failed => we no longer have
8722 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008723 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008724 -----------------------------------------------------------------------*/
8725 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8726 {
8727 /*We can switch to false here because even if a subsequent Join comes in
8728 it will only be processed when DAL transitions out of BUSY state which
8729 happens when the Del BSS request comes */
8730 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8731
8732 /*Former association is complete - prepare next pending assoc for
8733 processing */
8734 WDI_DequeueAssocRequest(pWDICtx);
8735 }
8736
8737 wpalMutexRelease(&pWDICtx->wptMutex);
8738 /*-----------------------------------------------------------------------
8739 Get message buffer
8740 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 sizeof(halBssReqMsg.deleteBssParams),
8743 &pSendBuffer, &usDataOffset, &usSendSize))||
8744 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8745 {
8746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008747 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008748 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 }
8752
8753 /*Fill in the message request structure*/
8754
8755 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008756 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008757
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 wpalMemoryCopy( pSendBuffer+usDataOffset,
8759 &halBssReqMsg.deleteBssParams,
8760 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008761
8762 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008764
Jeff Johnsone7245742012-09-05 17:12:55 -07008765
Jeff Johnson295189b2012-06-20 16:38:30 -07008766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008767 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8771
Jeff Johnsone7245742012-09-05 17:12:55 -07008772
Jeff Johnson295189b2012-06-20 16:38:30 -07008773}/*WDI_ProcessDelBSSReq*/
8774
8775/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008778
8779 @param pWDICtx: pointer to the WLAN DAL context
8780 pEventData: pointer to the event information structure
8781
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 @see
8783 @return Result of the function call
8784*/
8785WDI_Status
8786WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008787(
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 WDI_ControlBlockType* pWDICtx,
8789 WDI_EventInfoType* pEventData
8790)
8791{
8792 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8793 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 wpt_uint16 usDataOffset = 0;
8798 wpt_uint16 usSendSize = 0;
8799 wpt_uint16 uMsgSize = 0;
8800 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008802
Jeff Johnsone7245742012-09-05 17:12:55 -07008803 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8805
8806 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 -------------------------------------------------------------------------*/
8809 if (( NULL == pEventData ) ||
8810 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8811 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8812 {
8813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 }
8818
8819 /*-------------------------------------------------------------------------
8820 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008822 -------------------------------------------------------------------------*/
8823 wpalMutexAcquire(&pWDICtx->wptMutex);
8824
8825 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8829 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8830 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008831
8832 if ( NULL == pBSSSes )
8833 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8835 "%s: Association sequence for this BSS does not yet exist - "
8836 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8837 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008838
8839 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 }
8842
8843 /*------------------------------------------------------------------------
8844 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 ------------------------------------------------------------------------*/
8847 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8848 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8850 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8851 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008852
Jeff Johnsone7245742012-09-05 17:12:55 -07008853 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008854
8855 wpalMutexRelease(&pWDICtx->wptMutex);
8856
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 }
8859
8860 /*-----------------------------------------------------------------------
8861 If Post Assoc was not yet received - the current association must
8862 be in progress
8863 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8866 {
8867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8868 "Association sequence for this BSS association no longer in "
8869 "progress - not allowed");
8870
8871 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 }
8874
8875 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008876 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008877 -----------------------------------------------------------------------*/
8878 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8879 {
8880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8881 "Post Assoc not allowed before JOIN - failing request");
8882
8883 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 }
8886
8887 wpalMutexRelease(&pWDICtx->wptMutex);
8888
8889 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8890 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8891 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8896 ( usSendSize < (usDataOffset + uMsgSize )))
8897 {
8898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008899 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8901 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008903 }
8904
8905 /*Copy the STA parameters */
8906 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8907 &pwdiPostAssocParams->wdiSTAParams );
8908
8909 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 WDI_STATableFindStaidByAddr(pWDICtx,
8912 pwdiPostAssocParams->wdiSTAParams.macSTA,
8913 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8914 {
8915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008916 MAC_ADDRESS_STR
8917 ": This station does not exist in the WDI Station Table",
8918 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008919 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008920 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 }
8923
8924 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 pBSSSes->ucBSSIdx;
8927
8928 /*Copy the BSS parameters */
8929 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8930 &pwdiPostAssocParams->wdiBSSParams);
8931
8932 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 WDI_STATableFindStaidByAddr(pWDICtx,
8935 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008937 {
8938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008939 MAC_ADDRESS_STR
8940 ": This station does not exist in the WDI Station Table",
8941 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008943 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 }
8946
8947 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 pBSSSes->ucBSSIdx;
8950
Jeff Johnsone7245742012-09-05 17:12:55 -07008951
8952 wpalMemoryCopy( pSendBuffer+usDataOffset,
8953 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8954 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008955
8956 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8957
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8959 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8960 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008961
Jeff Johnsone7245742012-09-05 17:12:55 -07008962
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008965
Jeff Johnsone7245742012-09-05 17:12:55 -07008966
8967 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008970
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308971 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008976 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8977
Jeff Johnsone7245742012-09-05 17:12:55 -07008978
Jeff Johnson295189b2012-06-20 16:38:30 -07008979}/*WDI_ProcessPostAssocReq*/
8980
8981/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008982 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008984
8985 @param pWDICtx: pointer to the WLAN DAL context
8986 pEventData: pointer to the event information structure
8987
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 @see
8989 @return Result of the function call
8990*/
8991WDI_Status
8992WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008993(
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 WDI_ControlBlockType* pWDICtx,
8995 WDI_EventInfoType* pEventData
8996)
8997{
8998 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8999 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009001 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 wpt_uint16 usDataOffset = 0;
9004 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009006 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9007
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9010
9011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 -------------------------------------------------------------------------*/
9014 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9015 ( NULL == pEventData->pCBfnc ))
9016 {
9017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009018 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 }
9022
9023 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9024 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9025 /*-------------------------------------------------------------------------
9026 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 -------------------------------------------------------------------------*/
9029 wpalMutexAcquire(&pWDICtx->wptMutex);
9030
9031 /*------------------------------------------------------------------------
9032 Find the BSS for which the request is made and identify WDI session
9033 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9035 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009036 &macBSSID))
9037 {
9038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009039 "This station does not exist in the WDI Station Table %d",
9040 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 }
9044
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9046 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009047 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9049 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9050 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009051
9052 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 }
9055
9056 /*------------------------------------------------------------------------
9057 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009058 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 ------------------------------------------------------------------------*/
9060 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9061 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9063 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9064 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009065
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 }
9070
9071 wpalMutexRelease(&pWDICtx->wptMutex);
9072 /*-----------------------------------------------------------------------
9073 Get message buffer
9074 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 sizeof(halDelStaReqMsg.delStaParams),
9077 &pSendBuffer, &usDataOffset, &usSendSize))||
9078 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9079 {
9080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009081 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009085 }
9086
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9088 wpalMemoryCopy( pSendBuffer+usDataOffset,
9089 &halDelStaReqMsg.delStaParams,
9090 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009091
9092 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009094
9095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009097 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9100
9101}/*WDI_ProcessDelSTAReq*/
9102
9103
9104/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009106==========================================================================*/
9107/**
9108 @brief Process Set BSS Key Request function (called when Main FSM
9109 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009110
9111 @param pWDICtx: pointer to the WLAN DAL context
9112 pEventData: pointer to the event information structure
9113
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 @see
9115 @return Result of the function call
9116*/
9117WDI_Status
9118WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009119(
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 WDI_ControlBlockType* pWDICtx,
9121 WDI_EventInfoType* pEventData
9122)
9123{
9124 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9125 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 wpt_uint16 usDataOffset = 0;
9130 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009132 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9133 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309134 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009135
9136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9137
9138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 -------------------------------------------------------------------------*/
9141 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9142 ( NULL == pEventData->pCBfnc ))
9143 {
9144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009145 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 }
9149
9150 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9151 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9152 /*-------------------------------------------------------------------------
9153 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 -------------------------------------------------------------------------*/
9156 wpalMutexAcquire(&pWDICtx->wptMutex);
9157
9158 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9162 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9163 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009164
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 {
9167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9169 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009170
9171 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 }
9174
9175 /*------------------------------------------------------------------------
9176 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 ------------------------------------------------------------------------*/
9179 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9180 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9182 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9183 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009184
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009187 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009188 }
9189
9190
9191 wpalMutexRelease(&pWDICtx->wptMutex);
9192 /*-----------------------------------------------------------------------
9193 Get message buffer
9194 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009196 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9197 &pSendBuffer, &usDataOffset, &usSendSize))||
9198 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9199 {
9200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009201 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 }
9206
9207 /*-----------------------------------------------------------------------
9208 Copy the Key parameters into the HAL message
9209 -----------------------------------------------------------------------*/
9210
Jeff Johnsone7245742012-09-05 17:12:55 -07009211 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009212
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9215
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9218
9219 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9220 keyIndex++)
9221 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9224 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9225 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9226 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9227 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309228
9229 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9230 {
9231 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9232 {
9233 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9234 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9235 }
9236
9237 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9238 {
9239 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9240 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9241 }
9242
9243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9244 "%s: Negated Keys", __func__);
9245 }
9246 else
9247 {
9248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9249 "%s: No change in Keys", __func__);
9250 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009251 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009252 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309253 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9254 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9255 WDI_MAX_KEY_LENGTH);
9256 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009257 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009258 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009259 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309261 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009262
9263 wpalMemoryCopy( pSendBuffer+usDataOffset,
9264 &halSetBssKeyReqMsg.setBssKeyParams,
9265 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009266
9267 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009269
9270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9274 wdiSetBSSKeyRspCb, pEventData->pUserData,
9275 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009276
9277}/*WDI_ProcessSetBssKeyReq*/
9278
9279/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009282
9283 @param pWDICtx: pointer to the WLAN DAL context
9284 pEventData: pointer to the event information structure
9285
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 @see
9287 @return Result of the function call
9288*/
9289WDI_Status
9290WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009291(
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 WDI_ControlBlockType* pWDICtx,
9293 WDI_EventInfoType* pEventData
9294)
9295{
9296 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9297 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 wpt_uint16 usDataOffset = 0;
9302 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9306
9307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 -------------------------------------------------------------------------*/
9310 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9311 ( NULL == pEventData->pCBfnc ))
9312 {
9313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 }
9318
9319 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9320 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9321 /*-------------------------------------------------------------------------
9322 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 -------------------------------------------------------------------------*/
9325 wpalMutexAcquire(&pWDICtx->wptMutex);
9326
9327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009328 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9331 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9332 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009333
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 {
9336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9338 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009339
9340 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009342 }
9343
9344 /*------------------------------------------------------------------------
9345 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 ------------------------------------------------------------------------*/
9348 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9349 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9351 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9352 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009353
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009356 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009357 }
9358
9359
9360 wpalMutexRelease(&pWDICtx->wptMutex);
9361
9362 /*-----------------------------------------------------------------------
9363 Get message buffer
9364 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9367 &pSendBuffer, &usDataOffset, &usSendSize))||
9368 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9369 {
9370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009371 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 }
9376 /*-----------------------------------------------------------------------
9377 Copy the Key parameters into the HAL message
9378 -----------------------------------------------------------------------*/
9379 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9380
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9383
9384 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9385
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9388
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 wpalMemoryCopy( pSendBuffer+usDataOffset,
9390 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9391 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009392
9393 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009395
9396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009402}/*WDI_ProcessRemoveBssKeyReq*/
9403
9404/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009407
9408 @param pWDICtx: pointer to the WLAN DAL context
9409 pEventData: pointer to the event information structure
9410
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 @see
9412 @return Result of the function call
9413*/
9414WDI_Status
9415WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009416(
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 WDI_ControlBlockType* pWDICtx,
9418 WDI_EventInfoType* pEventData
9419)
9420{
9421 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9422 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9423 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 wpt_uint16 usDataOffset = 0;
9426 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9431 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309432 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009433
9434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9435
9436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009438 -------------------------------------------------------------------------*/
9439 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9440 ( NULL == pEventData->pCBfnc ))
9441 {
9442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 }
9447
9448 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9449 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9450 /*-------------------------------------------------------------------------
9451 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 -------------------------------------------------------------------------*/
9454 wpalMutexAcquire(&pWDICtx->wptMutex);
9455
9456 /*------------------------------------------------------------------------
9457 Find the BSS for which the request is made and identify WDI session
9458 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9460 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 &macBSSID))
9462 {
9463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009464 "This station does not exist in the WDI Station Table %d",
9465 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 }
9469
Jeff Johnsone7245742012-09-05 17:12:55 -07009470 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9471 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9474 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9475 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009476
9477 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009480
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 /*------------------------------------------------------------------------
9482 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 ------------------------------------------------------------------------*/
9485 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9486 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9488 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9489 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009490
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 }
9495
9496
9497 wpalMutexRelease(&pWDICtx->wptMutex);
9498 /*-----------------------------------------------------------------------
9499 Get message buffer
9500 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9503 &pSendBuffer, &usDataOffset, &usSendSize))||
9504 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9505 {
9506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009507 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 }
9512 /*-----------------------------------------------------------------------
9513 Copy the STA Key parameters into the HAL message
9514 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9517
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9520
9521 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9522
9523 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9524
9525 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9526
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9528 keyIndex++)
9529 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9532 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9533 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9534 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9535 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309536
9537 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9538 {
9539 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9540 {
9541 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9542 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9543 }
9544
9545 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9546 {
9547 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9548 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9549 }
9550
9551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9552 "%s: Negated Keys", __func__);
9553 }
9554 else
9555 {
9556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9557 "%s: No change in Keys", __func__);
9558 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009559 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009560 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309561 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9562 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9563 WDI_MAX_KEY_LENGTH);
9564 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009565 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009566 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309569 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009570
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 wpalMemoryCopy( pSendBuffer+usDataOffset,
9572 &halSetStaKeyReqMsg.setStaKeyParams,
9573 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009574
9575 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309577 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9582 wdiSetSTAKeyRspCb, pEventData->pUserData,
9583 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009584
9585}/*WDI_ProcessSetSTAKeyReq*/
9586
9587/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009590
9591 @param pWDICtx: pointer to the WLAN DAL context
9592 pEventData: pointer to the event information structure
9593
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 @see
9595 @return Result of the function call
9596*/
9597WDI_Status
9598WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009599(
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 WDI_ControlBlockType* pWDICtx,
9601 WDI_EventInfoType* pEventData
9602)
9603{
9604 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9605 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9606 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 wpt_uint16 usDataOffset = 0;
9609 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 wpt_macAddr macBSSID;
9612 wpt_uint8 ucCurrentBSSSesIdx;
9613 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9615
9616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 -------------------------------------------------------------------------*/
9619 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9620 ( NULL == pEventData->pCBfnc ))
9621 {
9622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009623 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 }
9627
9628 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9629 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9630 /*-------------------------------------------------------------------------
9631 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 -------------------------------------------------------------------------*/
9634 wpalMutexAcquire(&pWDICtx->wptMutex);
9635
9636 /*------------------------------------------------------------------------
9637 Find the BSS for which the request is made and identify WDI session
9638 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9640 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 &macBSSID))
9642 {
9643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009644 "This station does not exist in the WDI Station Table %d",
9645 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 }
9649
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9651 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9654 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9655 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009656
9657 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009659 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009660
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 /*------------------------------------------------------------------------
9662 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 ------------------------------------------------------------------------*/
9665 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9666 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9668 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9669 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009670
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 }
9675
9676
9677
9678 wpalMutexRelease(&pWDICtx->wptMutex);
9679 /*-----------------------------------------------------------------------
9680 Get message buffer
9681 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9684 &pSendBuffer, &usDataOffset, &usSendSize))||
9685 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9686 {
9687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009688 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 }
9693
9694 /*-----------------------------------------------------------------------
9695 Copy the Key parameters into the HAL message
9696 -----------------------------------------------------------------------*/
9697
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9700
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9703
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009705 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9706
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009708 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9709
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 wpalMemoryCopy( pSendBuffer+usDataOffset,
9711 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9712 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009713
9714 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009716
9717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009723
9724}/*WDI_ProcessRemoveSTAKeyReq*/
9725
9726/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009727 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009728 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009729
9730 @param pWDICtx: pointer to the WLAN DAL context
9731 pEventData: pointer to the event information structure
9732
Jeff Johnson295189b2012-06-20 16:38:30 -07009733 @see
9734 @return Result of the function call
9735*/
9736WDI_Status
9737WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009738(
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 WDI_ControlBlockType* pWDICtx,
9740 WDI_EventInfoType* pEventData
9741)
9742{
9743 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9744 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9745 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009746 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009747 wpt_uint16 usDataOffset = 0;
9748 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009751 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009752 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9753 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309754 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009755
9756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9757
9758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009760 -------------------------------------------------------------------------*/
9761 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9762 ( NULL == pEventData->pCBfnc ))
9763 {
9764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 }
9769
9770 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9771 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9772 /*-------------------------------------------------------------------------
9773 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 -------------------------------------------------------------------------*/
9776 wpalMutexAcquire(&pWDICtx->wptMutex);
9777
9778 /*------------------------------------------------------------------------
9779 Find the BSS for which the request is made and identify WDI session
9780 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9782 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 &macBSSID))
9784 {
9785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009786 "This station does not exist in the WDI Station Table %d",
9787 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009788 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 }
9791
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9793 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 {
9795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009796 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009798
9799 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009802
Jeff Johnson295189b2012-06-20 16:38:30 -07009803 /*------------------------------------------------------------------------
9804 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 ------------------------------------------------------------------------*/
9807 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9808 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9810 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9811 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009812
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 }
9817
9818
9819 wpalMutexRelease(&pWDICtx->wptMutex);
9820 /*-----------------------------------------------------------------------
9821 Get message buffer
9822 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9825 &pSendBuffer, &usDataOffset, &usSendSize))||
9826 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9827 {
9828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009829 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9831 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 Copy the STA Key parameters into the HAL message
9836 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9839
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009841 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9842
9843 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9844
9845 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9846
9847 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9848
Jeff Johnson295189b2012-06-20 16:38:30 -07009849 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9850 keyIndex++)
9851 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9854 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9855 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9856 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9857 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309858
9859 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9860 {
9861 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9862 {
9863 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9864 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9865 }
9866
9867 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9868 {
9869 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9870 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9871 }
9872
9873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9874 "%s: Negated Keys", __func__);
9875 }
9876 else
9877 {
9878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9879 "%s: No change in Keys", __func__);
9880 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309883 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9884 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9885 WDI_MAX_KEY_LENGTH);
9886 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009888 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309891 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 wpalMemoryCopy( pSendBuffer+usDataOffset,
9893 &halSetStaKeyReqMsg.setStaKeyParams,
9894 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009895
9896 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009898
9899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9903 wdiSetSTAKeyRspCb, pEventData->pUserData,
9904 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009905
9906}/*WDI_ProcessSetSTABcastKeyReq*/
9907
9908/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009911
9912 @param pWDICtx: pointer to the WLAN DAL context
9913 pEventData: pointer to the event information structure
9914
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 @see
9916 @return Result of the function call
9917*/
9918WDI_Status
9919WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009920(
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 WDI_ControlBlockType* pWDICtx,
9922 WDI_EventInfoType* pEventData
9923)
9924{
9925 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9926 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9927 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009929 wpt_uint16 usDataOffset = 0;
9930 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 wpt_macAddr macBSSID;
9933 wpt_uint8 ucCurrentBSSSesIdx;
9934 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9936
9937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009939 -------------------------------------------------------------------------*/
9940 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9941 ( NULL == pEventData->pCBfnc ))
9942 {
9943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 }
9948
9949 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9950 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9951 /*-------------------------------------------------------------------------
9952 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 -------------------------------------------------------------------------*/
9955 wpalMutexAcquire(&pWDICtx->wptMutex);
9956
9957 /*------------------------------------------------------------------------
9958 Find the BSS for which the request is made and identify WDI session
9959 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9961 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 &macBSSID))
9963 {
9964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009965 "This station does not exist in the WDI Station Table %d",
9966 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 }
9970
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9972 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9975 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9976 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009977
9978 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009981
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 /*------------------------------------------------------------------------
9983 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 ------------------------------------------------------------------------*/
9986 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9987 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9989 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9990 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009991
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 }
9996
9997
9998
9999 wpalMutexRelease(&pWDICtx->wptMutex);
10000 /*-----------------------------------------------------------------------
10001 Get message buffer
10002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10005 &pSendBuffer, &usDataOffset, &usSendSize))||
10006 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10007 {
10008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010009 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 }
10014
10015 /*-----------------------------------------------------------------------
10016 Copy the Key parameters into the HAL message
10017 -----------------------------------------------------------------------*/
10018
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010020 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10021
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10024
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010026 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10027
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10030
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 wpalMemoryCopy( pSendBuffer+usDataOffset,
10032 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10033 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010034
10035 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010037
10038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010039 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010043 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010044
10045}/*WDI_ProcessRemoveSTABcastKeyReq*/
10046
10047/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010049==========================================================================*/
10050/**
10051 @brief Process Add TSpec Request function (called when Main FSM
10052 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010053
10054 @param pWDICtx: pointer to the WLAN DAL context
10055 pEventData: pointer to the event information structure
10056
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 @see
10058 @return Result of the function call
10059*/
10060WDI_Status
10061WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010062(
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 WDI_ControlBlockType* pWDICtx,
10064 WDI_EventInfoType* pEventData
10065)
10066{
10067 WDI_AddTSReqParamsType* pwdiAddTSParams;
10068 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010072 wpt_uint16 usDataOffset = 0;
10073 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 wpt_macAddr macBSSID;
10076 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010077
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10079
10080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010082 -------------------------------------------------------------------------*/
10083 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10084 ( NULL == pEventData->pCBfnc ))
10085 {
10086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 }
10091
10092 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10093 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10094 /*-------------------------------------------------------------------------
10095 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 -------------------------------------------------------------------------*/
10098 wpalMutexAcquire(&pWDICtx->wptMutex);
10099
10100 /*------------------------------------------------------------------------
10101 Find the BSS for which the request is made and identify WDI session
10102 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10104 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 &macBSSID))
10106 {
10107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010108 "This station does not exist in the WDI Station Table %d",
10109 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010110 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 }
10113
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10115 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10118 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10119 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010120
10121 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010124
Jeff Johnson295189b2012-06-20 16:38:30 -070010125 /*------------------------------------------------------------------------
10126 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 ------------------------------------------------------------------------*/
10129 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10130 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10132 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10133 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010134
Jeff Johnsone7245742012-09-05 17:12:55 -070010135 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 }
10139
10140 wpalMutexRelease(&pWDICtx->wptMutex);
10141 /*-----------------------------------------------------------------------
10142 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10146 sizeof(halAddTsParams),
10147 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010148 &usSendSize))||
10149 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10150 {
10151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010152 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 }
10157
10158 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10159 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10160
10161 //TSPEC IE
10162 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10163 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010164 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010165 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010171 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010172 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010173 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010175 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010181 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010182 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010183 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010184 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010188 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10194
10195 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010204 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010206 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010207 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010208 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010209 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10210
10211 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010215 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10216
Jeff Johnsone7245742012-09-05 17:12:55 -070010217 wpalMemoryCopy( pSendBuffer+usDataOffset,
10218 &halAddTsParams,
10219 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010220
10221 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010222 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010223
10224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010225 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010228 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010229 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010230}/*WDI_ProcessAddTSpecReq*/
10231
10232
10233/**
10234 @brief Process Del TSpec Request function (called when Main FSM
10235 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010236
10237 @param pWDICtx: pointer to the WLAN DAL context
10238 pEventData: pointer to the event information structure
10239
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 @see
10241 @return Result of the function call
10242*/
10243WDI_Status
10244WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010245(
Jeff Johnson295189b2012-06-20 16:38:30 -070010246 WDI_ControlBlockType* pWDICtx,
10247 WDI_EventInfoType* pEventData
10248)
10249{
10250 WDI_DelTSReqParamsType* pwdiDelTSParams;
10251 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010252 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010253 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 wpt_uint16 usDataOffset = 0;
10256 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10259
10260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010261 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 -------------------------------------------------------------------------*/
10263 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10264 ( NULL == pEventData->pCBfnc ))
10265 {
10266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010267 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 }
10271
10272 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10273 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10274
10275 /*-------------------------------------------------------------------------
10276 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 -------------------------------------------------------------------------*/
10279 wpalMutexAcquire(&pWDICtx->wptMutex);
10280
10281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010282 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010283 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010284 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10285 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10286 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010287
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010289 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10291 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10292 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10293
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010296 }
10297
10298 /*------------------------------------------------------------------------
10299 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010300 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 ------------------------------------------------------------------------*/
10302 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10303 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10305 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10306 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010307
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010309 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 }
10312
10313
10314 wpalMutexRelease(&pWDICtx->wptMutex);
10315 /*-----------------------------------------------------------------------
10316 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010320 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10321 &pSendBuffer, &usDataOffset, &usSendSize))||
10322 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10323 {
10324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010325 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010326 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 }
10330
Jeff Johnsone7245742012-09-05 17:12:55 -070010331 wpalMemoryCopy( pSendBuffer+usDataOffset,
10332 &pwdiDelTSParams->wdiDelTSInfo,
10333 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010334
10335 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010336 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010337
10338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010339 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010340 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10342 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010343}/*WDI_ProcessDelTSpecReq*/
10344
10345/**
10346 @brief Process Update EDCA Params Request function (called when
10347 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010348
10349 @param pWDICtx: pointer to the WLAN DAL context
10350 pEventData: pointer to the event information structure
10351
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 @see
10353 @return Result of the function call
10354*/
10355WDI_Status
10356WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010357(
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 WDI_ControlBlockType* pWDICtx,
10359 WDI_EventInfoType* pEventData
10360)
10361{
10362 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10363 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010364 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010365 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010366 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010367 wpt_uint16 usDataOffset = 0;
10368 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010369 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10371
10372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 -------------------------------------------------------------------------*/
10375 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10376 ( NULL == pEventData->pCBfnc ))
10377 {
10378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 }
10383
10384 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10385 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10386 /*-------------------------------------------------------------------------
10387 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 -------------------------------------------------------------------------*/
10390 wpalMutexAcquire(&pWDICtx->wptMutex);
10391
10392 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10396 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10397 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010398
Jeff Johnsone7245742012-09-05 17:12:55 -070010399 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 {
10401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10403 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010404
10405 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010406 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 }
10408
10409 /*------------------------------------------------------------------------
10410 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 ------------------------------------------------------------------------*/
10413 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10414 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10416 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10417 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010418
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 }
10423
10424
10425 wpalMutexRelease(&pWDICtx->wptMutex);
10426 /*-----------------------------------------------------------------------
10427 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010430 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010431 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10432 &pSendBuffer, &usDataOffset, &usSendSize))||
10433 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10434 {
10435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010436 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010437 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 }
10441
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 wpalMemoryCopy( pSendBuffer+usDataOffset,
10443 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10444 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010445
10446 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010448
10449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10453 wdiUpdateEDCARspCb, pEventData->pUserData,
10454 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010455}/*WDI_ProcessUpdateEDCAParamsReq*/
10456
10457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010460
10461 @param pWDICtx: pointer to the WLAN DAL context
10462 pEventData: pointer to the event information structure
10463
Jeff Johnson295189b2012-06-20 16:38:30 -070010464 @see
10465 @return Result of the function call
10466*/
10467WDI_Status
10468WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010469(
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 WDI_ControlBlockType* pWDICtx,
10471 WDI_EventInfoType* pEventData
10472)
10473{
10474 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10475 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 wpt_uint16 usDataOffset = 0;
10480 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 wpt_macAddr macBSSID;
10483
10484 tAddBASessionReqMsg halAddBASessionReq;
10485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10486
10487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 -------------------------------------------------------------------------*/
10490 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10491 ( NULL == pEventData->pCBfnc ))
10492 {
10493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 }
10498
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10503 /*-------------------------------------------------------------------------
10504 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010505 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010506 -------------------------------------------------------------------------*/
10507 wpalMutexAcquire(&pWDICtx->wptMutex);
10508
10509 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10513 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010514 &macBSSID))
10515 {
10516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010517 "This station does not exist in the WDI Station Table %d",
10518 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010519 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 }
10522
10523
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010525
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10529 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10530 __func__, MAC_ADDR_ARRAY(macBSSID));
10531
Jeff Johnson295189b2012-06-20 16:38:30 -070010532 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010534 }
10535
10536 /*------------------------------------------------------------------------
10537 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 ------------------------------------------------------------------------*/
10540 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10541 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10543 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10544 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010545
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010547 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010549 }
10550
10551
10552 wpalMutexRelease(&pWDICtx->wptMutex);
10553 /*-----------------------------------------------------------------------
10554 Get message buffer
10555 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10557 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010558 sizeof(halAddBASessionReq.addBASessionParams),
10559 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10562 {
10563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010564 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 }
10569
10570 halAddBASessionReq.addBASessionParams.staIdx =
10571 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10572 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10573 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10574 WDI_MAC_ADDR_LEN);
10575 halAddBASessionReq.addBASessionParams.baTID =
10576 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10577 halAddBASessionReq.addBASessionParams.baPolicy =
10578 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10579 halAddBASessionReq.addBASessionParams.baBufferSize =
10580 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10581 halAddBASessionReq.addBASessionParams.baTimeout =
10582 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10583 halAddBASessionReq.addBASessionParams.baSSN =
10584 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10585 halAddBASessionReq.addBASessionParams.baDirection =
10586 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10587
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 wpalMemoryCopy( pSendBuffer+usDataOffset,
10589 &halAddBASessionReq.addBASessionParams,
10590 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010591
10592 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010593 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010594
10595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010596 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010597 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010598 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10599 wdiAddBASessionRspCb, pEventData->pUserData,
10600 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010601}/*WDI_ProcessAddBASessionReq*/
10602
10603/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010604 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010605 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010606
10607 @param pWDICtx: pointer to the WLAN DAL context
10608 pEventData: pointer to the event information structure
10609
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 @see
10611 @return Result of the function call
10612*/
10613WDI_Status
10614WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010615(
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 WDI_ControlBlockType* pWDICtx,
10617 WDI_EventInfoType* pEventData
10618)
10619{
10620 WDI_DelBAReqParamsType* pwdiDelBAParams;
10621 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010623 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 wpt_uint16 usDataOffset = 0;
10626 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 wpt_macAddr macBSSID;
10629 tDelBAParams halDelBAparam;
10630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10631
10632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010634 -------------------------------------------------------------------------*/
10635 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10636 ( NULL == pEventData->pCBfnc ))
10637 {
10638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010642 }
10643
10644 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10645 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10646 /*-------------------------------------------------------------------------
10647 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010648 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010649 -------------------------------------------------------------------------*/
10650 wpalMutexAcquire(&pWDICtx->wptMutex);
10651
10652 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10656 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010657 &macBSSID))
10658 {
10659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010660 "This station does not exist in the WDI Station Table %d",
10661 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010662 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010664 }
10665
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010667
Jeff Johnsone7245742012-09-05 17:12:55 -070010668 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010669 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10671 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10672 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010673
10674 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 }
10677
10678 /*------------------------------------------------------------------------
10679 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 ------------------------------------------------------------------------*/
10682 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10683 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10685 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10686 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010687
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010691 }
10692
10693 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010694 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010695 sizeof(halDelBAparam),
10696 &pSendBuffer, &usDataOffset, &usSendSize))||
10697 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10698 {
10699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010700 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010701 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10702 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
10706 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10707 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10708 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10709
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 wpalMemoryCopy( pSendBuffer+usDataOffset,
10711 &halDelBAparam,
10712 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010713
10714 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010715 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010716
10717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010718 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010719 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10721 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010722}/*WDI_ProcessDelBAReq*/
10723
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010724#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010725
10726WDI_Status
10727WDI_ProcessTSMStatsReq
10728(
10729 WDI_ControlBlockType* pWDICtx,
10730 WDI_EventInfoType* pEventData
10731)
10732{
10733 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10734 WDI_TsmRspCb wdiTSMRspCb;
10735 wpt_uint8 ucCurrentBSSSesIdx = 0;
10736 WDI_BSSSessionType* pBSSSes = NULL;
10737 wpt_uint8* pSendBuffer = NULL;
10738 wpt_uint16 usDataOffset = 0;
10739 wpt_uint16 usSendSize = 0;
10740 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10741 tTsmStatsParams halTsmStatsReqParams = {0};
10742
10743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10744
10745 /*-------------------------------------------------------------------------
10746 Sanity check
10747 -------------------------------------------------------------------------*/
10748 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10749 ( NULL == pEventData->pCBfnc ))
10750 {
10751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010752 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 WDI_ASSERT(0);
10754 return WDI_STATUS_E_FAILURE;
10755 }
10756
10757 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10758 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10759 /*-------------------------------------------------------------------------
10760 Check to see if we are in the middle of an association, if so queue, if
10761 not it means it is free to process request
10762 -------------------------------------------------------------------------*/
10763 wpalMutexAcquire(&pWDICtx->wptMutex);
10764
10765 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10766 if ( NULL == pBSSSes )
10767 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10769 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10770 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010771
10772 wpalMutexRelease(&pWDICtx->wptMutex);
10773 return WDI_STATUS_E_NOT_ALLOWED;
10774 }
10775
10776 /*------------------------------------------------------------------------
10777 Check if this BSS is being currently processed or queued,
10778 if queued - queue the new request as well
10779 ------------------------------------------------------------------------*/
10780 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10781 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010783 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010784 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010785
10786 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10787 wpalMutexRelease(&pWDICtx->wptMutex);
10788 return wdiStatus;
10789 }
10790
10791 wpalMutexRelease(&pWDICtx->wptMutex);
10792 /*-----------------------------------------------------------------------
10793 Get message buffer
10794 ! TO DO : proper conversion into the HAL Message Request Format
10795 -----------------------------------------------------------------------*/
10796 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10797 sizeof(halTsmStatsReqParams),
10798 &pSendBuffer, &usDataOffset, &usSendSize))||
10799 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10800 {
10801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010802 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 pEventData, pwdiTSMParams, wdiTSMRspCb);
10804 WDI_ASSERT(0);
10805 return WDI_STATUS_E_FAILURE;
10806 }
10807
10808 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10809 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10810 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10811 WDI_MAC_ADDR_LEN);
10812 wpalMemoryCopy( pSendBuffer+usDataOffset,
10813 &halTsmStatsReqParams,
10814 sizeof(halTsmStatsReqParams));
10815
10816 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10817 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10818
10819 /*-------------------------------------------------------------------------
10820 Send TSM Stats Request to HAL
10821 -------------------------------------------------------------------------*/
10822 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10823 wdiTSMRspCb, pEventData->pUserData,
10824 WDI_TSM_STATS_RESP);
10825}/*WDI_ProcessTSMStatsReq*/
10826
10827#endif
10828
10829
10830/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010833
10834 @param pWDICtx: pointer to the WLAN DAL context
10835 pEventData: pointer to the event information structure
10836
Jeff Johnson295189b2012-06-20 16:38:30 -070010837 @see
10838 @return Result of the function call
10839*/
10840WDI_Status
10841WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010842(
Jeff Johnson295189b2012-06-20 16:38:30 -070010843 WDI_ControlBlockType* pWDICtx,
10844 WDI_EventInfoType* pEventData
10845)
10846{
10847 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10848 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010849 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 wpt_uint16 usDataOffset = 0;
10851 wpt_uint16 usSendSize = 0;
10852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10853
10854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 -------------------------------------------------------------------------*/
10857 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10858 ( NULL == pEventData->pCBfnc ))
10859 {
10860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010861 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 }
10865
10866 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10867 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10868 /*-----------------------------------------------------------------------
10869 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010873 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10874 &pSendBuffer, &usDataOffset, &usSendSize))||
10875 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10876 {
10877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010878 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010882 }
10883
Jeff Johnsone7245742012-09-05 17:12:55 -070010884 wpalMemoryCopy( pSendBuffer+usDataOffset,
10885 &pwdiFlushAcParams->wdiFlushAcInfo,
10886 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010887
10888 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010890
10891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10895 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010896}/*WDI_ProcessFlushAcReq*/
10897
10898/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010899 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010900 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010901
10902 @param pWDICtx: pointer to the WLAN DAL context
10903 pEventData: pointer to the event information structure
10904
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 @see
10906 @return Result of the function call
10907*/
10908WDI_Status
10909WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010910(
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 WDI_ControlBlockType* pWDICtx,
10912 WDI_EventInfoType* pEventData
10913)
10914{
10915 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10916 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010918 wpt_uint16 usDataOffset = 0;
10919 wpt_uint16 usSendSize = 0;
10920
10921 tBtAmpEventMsg haltBtAmpEventMsg;
10922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10923
10924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 -------------------------------------------------------------------------*/
10927 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10928 ( NULL == pEventData->pCBfnc ))
10929 {
10930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010931 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010932 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010933 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 }
10935
10936 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10937 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10938 /*-----------------------------------------------------------------------
10939 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010943 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10944 &pSendBuffer, &usDataOffset, &usSendSize))||
10945 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10946 {
10947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010948 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 }
10953
Jeff Johnsone7245742012-09-05 17:12:55 -070010954 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010955 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010956 wpalMemoryCopy( pSendBuffer+usDataOffset,
10957 &haltBtAmpEventMsg.btAmpEventParams,
10958 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010959
10960 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010962
10963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010966 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10967 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010968}/*WDI_ProcessBtAmpEventReq*/
10969
10970/**
10971 @brief Process Add STA self Request function (called when Main FSM
10972 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010973
10974 @param pWDICtx: pointer to the WLAN DAL context
10975 pEventData: pointer to the event information structure
10976
Jeff Johnson295189b2012-06-20 16:38:30 -070010977 @see
10978 @return Result of the function call
10979*/
10980WDI_Status
10981WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010982(
Jeff Johnson295189b2012-06-20 16:38:30 -070010983 WDI_ControlBlockType* pWDICtx,
10984 WDI_EventInfoType* pEventData
10985)
10986{
10987 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10988 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010990 wpt_uint16 usDataOffset = 0;
10991 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010992 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10994
10995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 -------------------------------------------------------------------------*/
10998 if (( NULL == pEventData ) ||
10999 ( NULL == pEventData->pEventData) ||
11000 ( NULL == pEventData->pCBfnc))
11001 {
11002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011006 }
11007
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011010 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011011 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11012 /*-----------------------------------------------------------------------
11013 Get message buffer
11014 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011015 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11016 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011017 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011018 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011019 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011020 {
11021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011022 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011023 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011026 }
11027
11028 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011029 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011030 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11031
Jeff Johnsone7245742012-09-05 17:12:55 -070011032 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011033 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11034 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11035 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11036 {
11037 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11038 }
11039 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11040 VOS_P2P_CLIENT_MODE) ||
11041 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11042 VOS_P2P_DEVICE))
11043 {
11044 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11045 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011047 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011048
11049 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011050 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011051
11052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011053 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011054 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011055 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11056 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11057 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011058}/*WDI_ProcessAddSTASelfReq*/
11059
11060
11061
11062/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011065
11066 @param pWDICtx: pointer to the WLAN DAL context
11067 pEventData: pointer to the event information structure
11068
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 @see
11070 @return Result of the function call
11071*/
11072WDI_Status
11073WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011074(
Jeff Johnson295189b2012-06-20 16:38:30 -070011075 WDI_ControlBlockType* pWDICtx,
11076 WDI_EventInfoType* pEventData
11077)
11078{
11079 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11080 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011081 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011082 wpt_uint16 usDataOffset = 0;
11083 wpt_uint16 usSendSize = 0;
11084 tDelStaSelfParams halSetDelSelfSTAParams;
11085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11086
11087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 -------------------------------------------------------------------------*/
11090 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11091 ( NULL == pEventData->pCBfnc ))
11092 {
11093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011097 }
11098
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11101 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11102
11103 /*-----------------------------------------------------------------------
11104 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011105 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11109 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011110 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011111 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11112 {
11113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011114 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011115 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 }
11119
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11122
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11124 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011125
11126 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011128
11129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011130 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011131 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11133 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011134 WDI_DEL_STA_SELF_RESP);
11135
11136}
11137
Jeff Johnsone7245742012-09-05 17:12:55 -070011138#ifdef FEATURE_OEM_DATA_SUPPORT
11139/**
11140 @brief Process Start Oem Data Request function (called when Main
11141 FSM allows it)
11142
11143 @param pWDICtx: pointer to the WLAN DAL context
11144 pEventData: pointer to the event information structure
11145
11146 @see
11147 @return Result of the function call
11148*/
11149WDI_Status
11150WDI_ProcessStartOemDataReq
11151(
11152 WDI_ControlBlockType* pWDICtx,
11153 WDI_EventInfoType* pEventData
11154)
11155{
11156 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11157 WDI_oemDataRspCb wdiOemDataRspCb;
11158 wpt_uint8* pSendBuffer = NULL;
11159 wpt_uint16 usDataOffset = 0;
11160 wpt_uint16 usSendSize = 0;
11161 wpt_uint16 reqLen;
11162 tStartOemDataReqParams* halStartOemDataReqParams;
11163
11164 /*-------------------------------------------------------------------------
11165 Sanity check
11166 -------------------------------------------------------------------------*/
11167 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11168 ( NULL == pEventData->pCBfnc ))
11169 {
11170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011171 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011172 WDI_ASSERT(0);
11173 return WDI_STATUS_E_FAILURE;
11174 }
11175
11176 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11177 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11178
11179 /*-----------------------------------------------------------------------
11180 Get message buffer
11181 -----------------------------------------------------------------------*/
11182
11183 reqLen = sizeof(tStartOemDataReqParams);
11184
11185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11186 WDI_START_OEM_DATA_REQ, reqLen,
11187 &pSendBuffer, &usDataOffset, &usSendSize))||
11188 (usSendSize < (usDataOffset + reqLen)))
11189 {
11190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011191 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011192 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11193 WDI_ASSERT(0);
11194 return WDI_STATUS_E_FAILURE;
11195 }
11196
11197 //copying WDI OEM DATA REQ PARAMS to shared memory
11198 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11199
11200 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11201 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11202
11203 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11204 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11205
11206 /*-------------------------------------------------------------------------
11207 Send Start Request to HAL
11208 -------------------------------------------------------------------------*/
11209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11210 wdiOemDataRspCb, pEventData->pUserData,
11211 WDI_START_OEM_DATA_RESP);
11212}/*WDI_ProcessStartOemDataReq*/
11213#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011214
11215/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011216 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011217 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011218
11219 @param pWDICtx: pointer to the WLAN DAL context
11220 pEventData: pointer to the event information structure
11221
Jeff Johnson295189b2012-06-20 16:38:30 -070011222 @see
11223 @return Result of the function call
11224*/
11225WDI_Status
11226WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011227(
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 WDI_ControlBlockType* pWDICtx,
11229 WDI_EventInfoType* pEventData
11230)
11231{
11232 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11233 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 wpt_uint16 usDataOffset = 0;
11236 wpt_uint16 usSendSize = 0;
11237 tHalWlanHostResumeReqParam halResumeReqParams;
11238
11239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11240
11241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011243 -------------------------------------------------------------------------*/
11244 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11245 ( NULL == pEventData->pCBfnc ))
11246 {
11247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011248 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011251 }
11252
11253 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11254 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11255
11256 /*-----------------------------------------------------------------------
11257 Get message buffer
11258 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11261 &pSendBuffer, &usDataOffset, &usSendSize))||
11262 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11263 {
11264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011265 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011266 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11267 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011269 }
11270
Jeff Johnsone7245742012-09-05 17:12:55 -070011271 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011272 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011273
11274 wpalMemoryCopy( pSendBuffer+usDataOffset,
11275 &halResumeReqParams,
11276 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011277
11278 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011280
11281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011282 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011283 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11285 wdiHostResumeRspCb, pEventData->pUserData,
11286 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011287}/*WDI_ProcessHostResumeReq*/
11288
11289/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011290 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011291 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011292
11293 @param pWDICtx: pointer to the WLAN DAL context
11294 pEventData: pointer to the event information structure
11295
Jeff Johnson295189b2012-06-20 16:38:30 -070011296 @see
11297 @return Result of the function call
11298*/
11299WDI_Status
11300WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011301(
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 WDI_ControlBlockType* pWDICtx,
11303 WDI_EventInfoType* pEventData
11304)
11305{
11306 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11307 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 wpt_uint16 usDataOffset = 0;
11310 wpt_uint16 usSendSize = 0;
11311 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11313
11314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011316 -------------------------------------------------------------------------*/
11317 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11318 ( NULL == pEventData->pCBfnc ))
11319 {
11320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011321 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011324 }
11325
11326 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11327 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011328
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 /*-----------------------------------------------------------------------
11330 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011331 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011332 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011333 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011334 sizeof(halTxPerTrackingReqParam),
11335 &pSendBuffer, &usDataOffset, &usSendSize))||
11336 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11337 {
11338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011339 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011340 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011344
Jeff Johnson295189b2012-06-20 16:38:30 -070011345 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11346 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11347 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11348 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011349
11350 wpalMemoryCopy( pSendBuffer+usDataOffset,
11351 &halTxPerTrackingReqParam,
11352 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011353
11354 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011355 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011356
11357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11361 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011362}/*WDI_ProcessSetTxPerTrackingReq*/
11363
11364/*=========================================================================
11365 Indications
11366=========================================================================*/
11367
11368/**
11369 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011370
11371 @param pWDICtx: pointer to the WLAN DAL context
11372 pEventData: pointer to the event information structure
11373
Jeff Johnson295189b2012-06-20 16:38:30 -070011374 @see
11375 @return Result of the function call
11376*/
11377WDI_Status
11378WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011379(
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 WDI_ControlBlockType* pWDICtx,
11381 WDI_EventInfoType* pEventData
11382)
11383{
11384 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011385 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 wpt_uint16 usDataOffset = 0;
11387 wpt_uint16 usSendSize = 0;
11388 WDI_Status wdiStatus;
11389 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11391
11392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 -------------------------------------------------------------------------*/
11395 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11396 {
11397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011398 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 }
11402
11403 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11404
11405 /*-----------------------------------------------------------------------
11406 Get message buffer
11407 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11409 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011410 sizeof(halWlanSuspendIndparams),
11411 &pSendBuffer, &usDataOffset, &usSendSize))||
11412 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11413 {
11414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11415 "Unable to get send buffer in Suspend Ind ");
11416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011418 }
11419
11420 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11421 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11422
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011424 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011425
Jeff Johnsone7245742012-09-05 17:12:55 -070011426 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11427 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011428
11429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 -------------------------------------------------------------------------*/
11432 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011434
Jeff Johnsone7245742012-09-05 17:12:55 -070011435 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011436 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11437}/*WDI_ProcessHostSuspendInd*/
11438
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011439
11440
11441/**
11442 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11443
11444 @param pWDICtx: pointer to the WLAN DAL context
11445 pEventData: pointer to the event information structure
11446
11447 @see
11448 @return Result of the function call
11449*/
11450WDI_Status
11451WDI_ProcessTrafficStatsInd
11452(
11453 WDI_ControlBlockType* pWDICtx,
11454 WDI_EventInfoType* pEventData
11455)
11456{
11457 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11458 wpt_uint8* pSendBuffer = NULL;
11459 wpt_uint16 usDataOffset = 0;
11460 wpt_uint16 usSendSize = 0;
11461 WDI_Status wdiStatus;
11462 tStatsClassBIndParams* pStatsClassBIndParams;
11463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11464
11465 /*-------------------------------------------------------------------------
11466 Sanity check
11467 -------------------------------------------------------------------------*/
11468 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11469 {
11470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11471 "%s: Invalid parameters in Traffic Stats ind",__func__);
11472 WDI_ASSERT(0);
11473 return WDI_STATUS_E_FAILURE;
11474 }
11475
11476 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11477
11478 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11479 {
11480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11481 "%s: Invalid parameters in Traffic Stats ind",__func__);
11482 WDI_ASSERT(0);
11483 return WDI_STATUS_E_FAILURE;
11484 }
11485
11486 /*-----------------------------------------------------------------------
11487 Get message buffer
11488 -----------------------------------------------------------------------*/
11489 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11490 WDI_TRAFFIC_STATS_IND,
11491 sizeof(tStatsClassBIndParams),
11492 &pSendBuffer, &usDataOffset, &usSendSize))||
11493 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11494 {
11495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11496 "Unable to get send buffer in Traffic Stats Ind ");
11497 WDI_ASSERT(0);
11498 return WDI_STATUS_E_FAILURE;
11499 }
11500
11501 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11502
11503 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11504
11505 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11506 pTrafficStatsIndParams->pTrafficStats,
11507 pTrafficStatsIndParams->length);
11508
11509 /*-------------------------------------------------------------------------
11510 Send Suspend Request to HAL
11511 -------------------------------------------------------------------------*/
11512 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11513 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11514
11515 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11516 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11517}/*WDI_ProcessTrafficStatsInd*/
11518
Chet Lanctot186b5732013-03-18 10:26:30 -070011519#ifdef WLAN_FEATURE_11W
11520/**
11521 @brief Process Exclude Unencrypted Indications function (called
11522 when Main FSM allows it)
11523
11524 @param pWDICtx: pointer to the WLAN DAL context
11525 pEventData: pointer to the event information structure
11526
11527 @see
11528 @return Result of the function call
11529*/
11530WDI_Status
11531WDI_ProcessExcludeUnencryptInd
11532(
11533 WDI_ControlBlockType* pWDICtx,
11534 WDI_EventInfoType* pEventData
11535)
11536{
11537 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11538 wpt_uint8* pSendBuffer = NULL;
11539 wpt_uint16 usDataOffset = 0;
11540 wpt_uint16 usSendSize = 0;
11541 WDI_Status wdiStatus;
11542 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11544
11545 /*-------------------------------------------------------------------------
11546 Sanity check
11547 -------------------------------------------------------------------------*/
11548 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11549 {
11550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11551 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11552 WDI_ASSERT(0);
11553 return WDI_STATUS_E_FAILURE;
11554 }
11555
11556 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11557
11558 /*-----------------------------------------------------------------------
11559 Get message buffer
11560 -----------------------------------------------------------------------*/
11561 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11562 WDI_EXCLUDE_UNENCRYPTED_IND,
11563 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11564 &pSendBuffer, &usDataOffset, &usSendSize))||
11565 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11566 {
11567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11568 "Unable to get send buffer in Exclude Unencrypted Ind ");
11569 WDI_ASSERT(0);
11570 return WDI_STATUS_E_FAILURE;
11571 }
11572
11573 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11574
11575 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11576
11577 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11578 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11579
11580 /*-------------------------------------------------------------------------
11581 Send Suspend Request to HAL
11582 -------------------------------------------------------------------------*/
11583 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11584 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11585
11586 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11587 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11588}/*WDI_ProcessExcludeUnencryptInd*/
11589#endif
11590
Yue Mab9c86f42013-08-14 15:59:08 -070011591/**
11592 @brief Process Add Periodic Tx Pattern Indication function (called when
11593 Main FSM allows it)
11594
11595 @param pWDICtx: pointer to the WLAN DAL context
11596 pEventData: pointer to the event information structure
11597
11598 @see
11599 @return Result of the function call
11600*/
11601WDI_Status
11602WDI_ProcessAddPeriodicTxPtrnInd
11603(
11604 WDI_ControlBlockType* pWDICtx,
11605 WDI_EventInfoType* pEventData
11606)
11607{
11608 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11609 wpt_uint8* pSendBuffer = NULL;
11610 wpt_uint16 usDataOffset = 0;
11611 wpt_uint16 usSendSize = 0;
11612 WDI_Status wdiStatus;
11613 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11614 wpt_uint8 selfStaIdx = 0;
11615
11616 /*-------------------------------------------------------------------------
11617 Sanity check
11618 -------------------------------------------------------------------------*/
11619 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11620 {
11621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11622 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11623 WDI_ASSERT(0);
11624 return WDI_STATUS_E_FAILURE;
11625 }
11626
11627 pAddPeriodicTxPtrnParams =
11628 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11629
11630 /*------------------------------------------------------------------------
11631 Get message buffer
11632 ------------------------------------------------------------------------*/
11633 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11634 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11635 &pSendBuffer, &usDataOffset, &usSendSize))||
11636 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11637 {
11638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11639 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11640 __func__);
11641 WDI_ASSERT(0);
11642 return WDI_STATUS_E_FAILURE;
11643 }
11644
11645 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11646
11647 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11648 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11649 &selfStaIdx))
11650 {
11651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11652 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011653 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011654
11655 return WDI_STATUS_E_FAILURE;
11656 }
11657
11658 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11659 halAddPeriodicTxPtrn->ucPtrnId =
11660 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11661 halAddPeriodicTxPtrn->usPtrnSize =
11662 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11663 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11664 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11665
11666 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11667 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11668 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11669
11670 /*-------------------------------------------------------------------------
11671 Send Indication to HAL
11672 -------------------------------------------------------------------------*/
11673 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11674 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11675
11676 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11677
11678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11679 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11680
11681 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11682} /* WDI_ProcessAddPeriodicTxPtrnInd */
11683
11684/**
11685 @brief Process Delete Periodic Tx Pattern Indication function (called when
11686 Main FSM allows it)
11687
11688 @param pWDICtx: pointer to the WLAN DAL context
11689 pEventData: pointer to the event information structure
11690
11691 @see
11692 @return Result of the function call
11693*/
11694WDI_Status
11695WDI_ProcessDelPeriodicTxPtrnInd
11696(
11697 WDI_ControlBlockType* pWDICtx,
11698 WDI_EventInfoType* pEventData
11699)
11700{
11701 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11702 wpt_uint8* pSendBuffer = NULL;
11703 wpt_uint16 usDataOffset = 0;
11704 wpt_uint16 usSendSize = 0;
11705 WDI_Status wdiStatus;
11706 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11707 wpt_uint8 selfStaIdx = 0;
11708
11709 /*-------------------------------------------------------------------------
11710 Sanity check
11711 -------------------------------------------------------------------------*/
11712 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11713 {
11714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11715 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11716 WDI_ASSERT(0);
11717 return WDI_STATUS_E_FAILURE;
11718 }
11719
11720 pDelPeriodicTxPtrnParams =
11721 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11722
11723 /*------------------------------------------------------------------------
11724 Get message buffer
11725 ------------------------------------------------------------------------*/
11726 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11727 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11728 &pSendBuffer, &usDataOffset, &usSendSize))||
11729 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11730 {
11731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11732 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11733 __func__);
11734 WDI_ASSERT(0);
11735 return WDI_STATUS_E_FAILURE;
11736 }
11737
11738 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11739
11740 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11741 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11742 &selfStaIdx))
11743 {
11744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11745 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011746 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011747
11748 return WDI_STATUS_E_FAILURE;
11749 }
11750
11751 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11752 halDelPeriodicTxPtrn->uPatternIdBitmap =
11753 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11754
11755 /*-------------------------------------------------------------------------
11756 Send Indication to HAL
11757 -------------------------------------------------------------------------*/
11758 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11759 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11760
11761 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11762
11763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11764 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11765
11766 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11767} /* WDI_ProcessDelPeriodicTxPtrnInd */
11768
Jeff Johnson295189b2012-06-20 16:38:30 -070011769/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011770 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011771==========================================================================*/
11772/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011773 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011775
11776 @param pWDICtx: pointer to the WLAN DAL context
11777 pEventData: pointer to the event information structure
11778
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 @see
11780 @return Result of the function call
11781*/
11782WDI_Status
11783WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011784(
Jeff Johnson295189b2012-06-20 16:38:30 -070011785 WDI_ControlBlockType* pWDICtx,
11786 WDI_EventInfoType* pEventData
11787)
11788{
11789 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11790 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 wpt_uint16 usDataOffset = 0;
11793 wpt_uint16 usSendSize = 0;
11794 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11796
11797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011799 -------------------------------------------------------------------------*/
11800 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11801 ( NULL == pEventData->pCBfnc ))
11802 {
11803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 }
11808
11809 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11810 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11811 /*-----------------------------------------------------------------------
11812 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011816 sizeof(halSwitchChannelReq.switchChannelParams),
11817 &pSendBuffer, &usDataOffset, &usSendSize))||
11818 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11819 {
11820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011821 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011825 }
11826
Jeff Johnsone7245742012-09-05 17:12:55 -070011827 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011828 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011829#ifndef WLAN_FEATURE_VOWIFI
11830 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011831 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11832#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011833 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011834 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11835
11836#ifdef WLAN_FEATURE_VOWIFI
11837 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011838 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011839 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11840 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11841 WDI_MAC_ADDR_LEN);
11842 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11843 pwdiSwitchChParams->wdiChInfo.macBSSId,
11844 WDI_MAC_ADDR_LEN);
11845#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011846 wpalMemoryCopy( pSendBuffer+usDataOffset,
11847 &halSwitchChannelReq.switchChannelParams,
11848 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011849
11850 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011851 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011852
11853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011854 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011856 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11857 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011858}/*WDI_ProcessChannelSwitchReq*/
11859
11860/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011861 @brief Process Channel Switch Request function (called when
11862 Main FSM allows it)
11863
11864 @param pWDICtx: pointer to the WLAN DAL context
11865 pEventData: pointer to the event information structure
11866
11867 @see
11868 @return Result of the function call
11869*/
11870WDI_Status WDI_ProcessChannelSwitchReq_V1
11871(
11872 WDI_ControlBlockType* pWDICtx,
11873 WDI_EventInfoType* pEventData
11874)
11875{
11876 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11877 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11878 wpt_uint8* pSendBuffer = NULL;
11879 wpt_uint16 usDataOffset = 0;
11880 wpt_uint16 usSendSize = 0;
11881 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11883
11884 /*-------------------------------------------------------------------------
11885 Sanity check
11886 -------------------------------------------------------------------------*/
11887 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11888 ( NULL == pEventData->pCBfnc ))
11889 {
11890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11891 "%s: Invalid parameters", __func__);
11892 WDI_ASSERT(0);
11893 return WDI_STATUS_E_FAILURE;
11894 }
11895
11896 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11897 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11898 /*-----------------------------------------------------------------------
11899 Get message buffer
11900 ! TO DO : proper conversion into the HAL Message Request Format
11901 -----------------------------------------------------------------------*/
11902 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11903 WDI_CH_SWITCH_REQ_V1,
11904 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11905 &pSendBuffer, &usDataOffset, &usSendSize))||
11906 ( usSendSize < (usDataOffset +
11907 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11908 {
11909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11910 "Unable to get send buffer in channel switch req %p %p %p",
11911 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11912 WDI_ASSERT(0);
11913 return WDI_STATUS_E_FAILURE;
11914 }
11915
11916 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11917 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11918
11919 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11920 pwdiSwitchChParams->wdiChInfo.ucChannel;
11921#ifndef WLAN_FEATURE_VOWIFI
11922 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11923 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11924#endif
11925 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11926 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11927
11928#ifdef WLAN_FEATURE_VOWIFI
11929 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11930 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11931 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11932 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11933 WDI_MAC_ADDR_LEN);
11934 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11935 pwdiSwitchChParams->wdiChInfo.macBSSId,
11936 WDI_MAC_ADDR_LEN);
11937#endif
11938 wpalMemoryCopy( pSendBuffer+usDataOffset,
11939 &halSwitchChannelReq.switchChannelParams_V1,
11940 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11941
11942 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11943 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11944
11945 /*-------------------------------------------------------------------------
11946 Send Switch Channel Request to HAL
11947 -------------------------------------------------------------------------*/
11948 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11949 wdiSwitchChRspCb, pEventData->pUserData,
11950 WDI_CH_SWITCH_RESP_V1);
11951}/*WDI_ProcessChannelSwitchReq_V1*/
11952
11953/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011956
11957 @param pWDICtx: pointer to the WLAN DAL context
11958 pEventData: pointer to the event information structure
11959
Jeff Johnson295189b2012-06-20 16:38:30 -070011960 @see
11961 @return Result of the function call
11962*/
11963WDI_Status
11964WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011965(
Jeff Johnson295189b2012-06-20 16:38:30 -070011966 WDI_ControlBlockType* pWDICtx,
11967 WDI_EventInfoType* pEventData
11968)
11969{
11970 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11971 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011972 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011973 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011974 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011975 wpt_uint16 usDataOffset = 0;
11976 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011978
Jeff Johnsone7245742012-09-05 17:12:55 -070011979 tConfigStaReqMsg halConfigStaReqMsg;
11980 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11982
11983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 -------------------------------------------------------------------------*/
11986 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11987 ( NULL == pEventData->pCBfnc ))
11988 {
11989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011990 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011991 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011993 }
11994
Abhishek Singh6927fa02014-06-27 17:19:55 +053011995 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11997 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11998 /*-------------------------------------------------------------------------
11999 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012001 -------------------------------------------------------------------------*/
12002 wpalMutexAcquire(&pWDICtx->wptMutex);
12003
12004 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12008 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12009 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012010
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12014 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12015 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012016
12017 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 }
12020
12021 /*------------------------------------------------------------------------
12022 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012023 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012024 ------------------------------------------------------------------------*/
12025 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12026 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12028 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12029 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012030
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012033 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012034 }
12035
12036 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012037
12038 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12039#ifdef WLAN_FEATURE_11AC
12040 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012041 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 else
12043#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012044 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012045
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 /*-----------------------------------------------------------------------
12047 Get message buffer
12048 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012049 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12050 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012053 {
12054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012055 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12057 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 }
12060
12061 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 &pwdiConfigSTAParams->wdiReqInfo);
12064
12065 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12066 {
12067 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012068 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012069 WDI_STATableFindStaidByAddr(pWDICtx,
12070 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012071 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 {
12073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012074 MAC_ADDRESS_STR
12075 ": This station does not exist in the WDI Station Table",
12076 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012077 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012078 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 }
12081 }
12082 else
12083 {
12084 /* Need to fill in the STA Index to invalid, since at this point we have not
12085 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012086 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012087 }
12088
12089 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012091
Jeff Johnsone7245742012-09-05 17:12:55 -070012092 wpalMemoryCopy( pSendBuffer+usDataOffset,
12093 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012094 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012095
12096 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012097 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012098
Jeff Johnsone7245742012-09-05 17:12:55 -070012099 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12100 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012101 sizeof(pWDICtx->wdiCachedConfigStaReq));
12102
12103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012106 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12107 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012108}/*WDI_ProcessConfigStaReq*/
12109
12110
12111/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012114
12115 @param pWDICtx: pointer to the WLAN DAL context
12116 pEventData: pointer to the event information structure
12117
Jeff Johnson295189b2012-06-20 16:38:30 -070012118 @see
12119 @return Result of the function call
12120*/
12121WDI_Status
12122WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012123(
Jeff Johnson295189b2012-06-20 16:38:30 -070012124 WDI_ControlBlockType* pWDICtx,
12125 WDI_EventInfoType* pEventData
12126)
12127{
12128 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12129 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012130 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012132 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012133 wpt_uint16 usDataOffset = 0;
12134 wpt_uint16 usSendSize = 0;
12135 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12138
12139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012140 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012141 -------------------------------------------------------------------------*/
12142 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12143 ( NULL == pEventData->pCBfnc ))
12144 {
12145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012146 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012149 }
12150
12151 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12152 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12153 /*-------------------------------------------------------------------------
12154 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 -------------------------------------------------------------------------*/
12157 wpalMutexAcquire(&pWDICtx->wptMutex);
12158
12159 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012162 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12163 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12164 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012165
Jeff Johnsone7245742012-09-05 17:12:55 -070012166 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012169 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12170 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012171 }
12172 else
12173 {
12174 /*------------------------------------------------------------------------
12175 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 ------------------------------------------------------------------------*/
12178 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12179 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12181 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12182 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12183
12184 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012186 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012187 }
12188 }
12189 /* If the link is set to enter IDLE - the Session allocated for this BSS
12190 will be deleted on the Set Link State response coming from HAL
12191 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12194
12195 wpalMutexRelease(&pWDICtx->wptMutex);
12196 /*-----------------------------------------------------------------------
12197 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012198 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012200
12201 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012202 sizeof(halLinkStateReqMsg),
12203 &pSendBuffer, &usDataOffset, &usSendSize))||
12204 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12205 {
12206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012207 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 }
12212
12213 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12214 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12215
12216 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12217 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12218
Jeff Johnsone7245742012-09-05 17:12:55 -070012219 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012220 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12221
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 wpalMemoryCopy( pSendBuffer+usDataOffset,
12223 &halLinkStateReqMsg,
12224 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012225
12226 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012227 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012228
12229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012232 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12233 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012234}/*WDI_ProcessSetLinkStateReq*/
12235
12236
12237/**
12238 @brief Process Get Stats Request function (called when Main FSM
12239 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012240
12241 @param pWDICtx: pointer to the WLAN DAL context
12242 pEventData: pointer to the event information structure
12243
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 @see
12245 @return Result of the function call
12246*/
12247WDI_Status
12248WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012249(
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 WDI_ControlBlockType* pWDICtx,
12251 WDI_EventInfoType* pEventData
12252)
12253{
12254 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12255 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 wpt_uint16 usDataOffset = 0;
12258 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 WDI_BSSSessionType* pBSSSes = NULL;
12261 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012262 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 tHalStatsReqMsg halStatsReqMsg;
12264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12265
12266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012267 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 -------------------------------------------------------------------------*/
12269 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12270 ( NULL == pEventData->pCBfnc ) )
12271 {
12272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 }
12277
12278 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12279 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12280
12281 /*-------------------------------------------------------------------------
12282 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012283 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 -------------------------------------------------------------------------*/
12285 wpalMutexAcquire(&pWDICtx->wptMutex);
12286
12287 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12291 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 &macBSSID))
12293 {
12294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012295 "This station does not exist in the WDI Station Table %d",
12296 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 }
12300
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12302 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012303 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12305 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12306 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012307
12308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012309 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012310 }
12311
12312 /*------------------------------------------------------------------------
12313 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 ------------------------------------------------------------------------*/
12316 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12317 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12319 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12320 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012321
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012324 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 }
12326
12327
12328 wpalMutexRelease(&pWDICtx->wptMutex);
12329
12330 /*-----------------------------------------------------------------------
12331 Get message buffer
12332 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 sizeof(halStatsReqMsg.statsReqParams),
12335 &pSendBuffer, &usDataOffset, &usSendSize))||
12336 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12337 {
12338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012339 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 }
12344
Jeff Johnsone7245742012-09-05 17:12:55 -070012345 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012346 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 wpalMemoryCopy( pSendBuffer+usDataOffset,
12350 &halStatsReqMsg.statsReqParams,
12351 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012352
12353 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012355
12356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012357 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012359 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12360 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012361}/*WDI_ProcessGetStatsReq*/
12362
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012363#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012364/**
12365 @brief Process Get Roam Rssi Request function (called when Main FSM
12366 allows it)
12367
12368 @param pWDICtx: pointer to the WLAN DAL context
12369 pEventData: pointer to the event information structure
12370
12371 @see
12372 @return Result of the function call
12373*/
12374WDI_Status
12375WDI_ProcessGetRoamRssiReq
12376(
12377 WDI_ControlBlockType* pWDICtx,
12378 WDI_EventInfoType* pEventData
12379)
12380{
12381 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12382 WDI_GetStatsRspCb wdiGetStatsRspCb;
12383 wpt_uint8* pSendBuffer = NULL;
12384 wpt_uint16 usDataOffset = 0;
12385 wpt_uint16 usSendSize = 0;
12386 wpt_uint8 ucCurrentBSSSesIdx = 0;
12387 WDI_BSSSessionType* pBSSSes = NULL;
12388 wpt_macAddr macBSSID;
12389 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12390 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12392 /*-------------------------------------------------------------------------
12393 Sanity check
12394 -------------------------------------------------------------------------*/
12395 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12396 ( NULL == pEventData->pCBfnc ) )
12397 {
12398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12399 "%s: Invalid parameters", __func__);
12400 WDI_ASSERT(0);
12401 return WDI_STATUS_E_FAILURE;
12402 }
12403
12404 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12405 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12406
12407 /*-------------------------------------------------------------------------
12408 Check to see if we are in the middle of an association, if so queue, if
12409 not it means it is free to process request
12410 -------------------------------------------------------------------------*/
12411 wpalMutexAcquire(&pWDICtx->wptMutex);
12412
12413 /*------------------------------------------------------------------------
12414 Find the BSS for which the request is made
12415 ------------------------------------------------------------------------*/
12416 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12417 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12418 &macBSSID))
12419 {
12420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012421 "This station does not exist in the WDI Station Table %d",
12422 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012423 wpalMutexRelease(&pWDICtx->wptMutex);
12424 return WDI_STATUS_E_FAILURE;
12425 }
12426
12427 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12428 if ( NULL == pBSSSes )
12429 {
12430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12431 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12432 __func__, MAC_ADDR_ARRAY(macBSSID));
12433
12434 wpalMutexRelease(&pWDICtx->wptMutex);
12435 return WDI_STATUS_E_NOT_ALLOWED;
12436 }
12437
12438 /*------------------------------------------------------------------------
12439 Check if this BSS is being currently processed or queued,
12440 if queued - queue the new request as well
12441 ------------------------------------------------------------------------*/
12442 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12443 {
12444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12445 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12446 __func__, MAC_ADDR_ARRAY(macBSSID));
12447
12448 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12449 wpalMutexRelease(&pWDICtx->wptMutex);
12450 return wdiStatus;
12451 }
12452
12453 wpalMutexRelease(&pWDICtx->wptMutex);
12454
12455 /*-----------------------------------------------------------------------
12456 Get message buffer
12457 -----------------------------------------------------------------------*/
12458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12459 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12460 &pSendBuffer, &usDataOffset, &usSendSize))||
12461 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12462 {
12463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012464 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012465 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12466 WDI_ASSERT(0);
12467 return WDI_STATUS_E_FAILURE;
12468 }
12469
12470 halRssiRoamReqMsg.roamRssiReqParams.staId =
12471 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12472 wpalMemoryCopy( pSendBuffer+usDataOffset,
12473 &halRssiRoamReqMsg.roamRssiReqParams,
12474 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12475
12476 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12477 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12478
12479 /*-------------------------------------------------------------------------
12480 Send Get STA Request to HAL
12481 -------------------------------------------------------------------------*/
12482 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12483 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12484}/*WDI_ProcessGetRoamRssiReq*/
12485#endif
12486
Jeff Johnson295189b2012-06-20 16:38:30 -070012487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012488 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012490
12491 @param pWDICtx: pointer to the WLAN DAL context
12492 pEventData: pointer to the event information structure
12493
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 @see
12495 @return Result of the function call
12496*/
12497WDI_Status
12498WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012499(
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 WDI_ControlBlockType* pWDICtx,
12501 WDI_EventInfoType* pEventData
12502)
12503{
12504 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12505 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12506
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012508 wpt_uint16 usDataOffset = 0;
12509 wpt_uint16 usSendSize = 0;
12510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12511
12512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 -------------------------------------------------------------------------*/
12515 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12516 ( NULL == pEventData->pCBfnc))
12517 {
12518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 }
12523
12524 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12525 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12526
12527 /*-----------------------------------------------------------------------
12528 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 -----------------------------------------------------------------------*/
12531
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012533 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12534 &pSendBuffer, &usDataOffset, &usSendSize))||
12535 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12536 {
12537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012538 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012542 }
12543
Jeff Johnsone7245742012-09-05 17:12:55 -070012544 wpalMemoryCopy( pSendBuffer+usDataOffset,
12545 &pwdiUpdateCfgParams->uConfigBufferLen,
12546 sizeof(wpt_uint32));
12547 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12548 pwdiUpdateCfgParams->pConfigBuffer,
12549 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012550
12551 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012553
12554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012555 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012556 -------------------------------------------------------------------------*/
12557
Jeff Johnsone7245742012-09-05 17:12:55 -070012558 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12559 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012560
12561}/*WDI_ProcessUpdateCfgReq*/
12562
12563
12564/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012565 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012567
12568 @param pWDICtx: pointer to the WLAN DAL context
12569 pEventData: pointer to the event information structure
12570
Jeff Johnson295189b2012-06-20 16:38:30 -070012571 @see
12572 @return Result of the function call
12573*/
12574WDI_Status
12575WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012576(
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 WDI_ControlBlockType* pWDICtx,
12578 WDI_EventInfoType* pEventData
12579)
12580{
12581 WDI_AddBAReqParamsType* pwdiAddBAParams;
12582 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012583 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 wpt_uint16 usDataOffset = 0;
12587 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012588 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 wpt_macAddr macBSSID;
12590
12591 tAddBAReqMsg halAddBAReq;
12592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12593
12594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 -------------------------------------------------------------------------*/
12597 if (( NULL == pEventData ) ||
12598 ( NULL == pEventData->pEventData) ||
12599 ( NULL == pEventData->pCBfnc ))
12600 {
12601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012602 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 }
12606
12607 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12608 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12609
12610 /*-------------------------------------------------------------------------
12611 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 -------------------------------------------------------------------------*/
12614 wpalMutexAcquire(&pWDICtx->wptMutex);
12615
12616 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12620 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012621 &macBSSID))
12622 {
12623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012624 "This station does not exist in the WDI Station Table %d",
12625 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012628 }
12629
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12631 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12634 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12635 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012636
12637 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 }
12640
12641 /*------------------------------------------------------------------------
12642 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012643 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 ------------------------------------------------------------------------*/
12645 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12646 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12648 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12649 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012650
Jeff Johnsone7245742012-09-05 17:12:55 -070012651 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 }
12655
12656
12657 wpalMutexRelease(&pWDICtx->wptMutex);
12658 /*-----------------------------------------------------------------------
12659 Get message buffer
12660 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012662 sizeof(halAddBAReq.addBAParams),
12663 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12666 {
12667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012668 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012669 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 }
12673
Jeff Johnsone7245742012-09-05 17:12:55 -070012674 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012675 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12676 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12677#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012678 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012679 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12680#endif
12681
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 wpalMemoryCopy( pSendBuffer+usDataOffset,
12683 &halAddBAReq.addBAParams,
12684 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012685
12686 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012688
12689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12693 wdiAddBARspCb, pEventData->pUserData,
12694 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012695}/*WDI_ProcessAddBAReq*/
12696
12697
12698
12699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012700 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012702
12703 @param pWDICtx: pointer to the WLAN DAL context
12704 pEventData: pointer to the event information structure
12705
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 @see
12707 @return Result of the function call
12708*/
12709WDI_Status
12710WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012711(
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 WDI_ControlBlockType* pWDICtx,
12713 WDI_EventInfoType* pEventData
12714)
12715{
12716 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12717 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012718 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012719 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 wpt_uint16 usDataOffset = 0;
12722 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012723 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 wpt_uint16 index;
12725 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012726
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 tTriggerBAReqMsg halTriggerBAReq;
12728 tTriggerBaReqCandidate* halTriggerBACandidate;
12729 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12731
12732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 -------------------------------------------------------------------------*/
12735 if (( NULL == pEventData ) ||
12736 ( NULL == pEventData->pEventData ) ||
12737 ( NULL == pEventData->pCBfnc ))
12738 {
12739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012740 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012743 }
12744
12745 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12746 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12747 /*-------------------------------------------------------------------------
12748 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012749 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012750 -------------------------------------------------------------------------*/
12751 wpalMutexAcquire(&pWDICtx->wptMutex);
12752
12753 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012754 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012756 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12757 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 &macBSSID))
12759 {
12760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012761 "This station does not exist in the WDI Station Table %d",
12762 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012765 }
12766
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12768 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012769 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12771 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12772 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012773
12774 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012776 }
12777
12778 /*------------------------------------------------------------------------
12779 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012780 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012781 ------------------------------------------------------------------------*/
12782 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12783 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12785 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12786 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012787
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012789 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012790 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 }
12792
12793
12794 wpalMutexRelease(&pWDICtx->wptMutex);
12795 /*-----------------------------------------------------------------------
12796 Get message buffer
12797 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012798 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12799 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012801 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012802 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12803 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012804 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012805 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12808 {
12809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012810 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012811 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 }
12815
Jeff Johnsone7245742012-09-05 17:12:55 -070012816 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012817 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012818 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12820
Jeff Johnsone7245742012-09-05 17:12:55 -070012821 wpalMemoryCopy( pSendBuffer+usDataOffset,
12822 &halTriggerBAReq.triggerBAParams,
12823 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012824
Jeff Johnsone7245742012-09-05 17:12:55 -070012825 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012826 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12827 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12828 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012829
12830 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012831 index++)
12832 {
12833 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12834 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12835 halTriggerBACandidate++;
12836 wdiTriggerBACandidate++;
12837 }
12838
12839 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012841
12842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012843 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012844 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012845 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12846 wdiTriggerBARspCb, pEventData->pUserData,
12847 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012848}/*WDI_ProcessTriggerBAReq*/
12849
12850
12851
12852/**
12853 @brief Process Update Beacon Params Request function (called when Main FSM
12854 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012855
12856 @param pWDICtx: pointer to the WLAN DAL context
12857 pEventData: pointer to the event information structure
12858
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 @see
12860 @return Result of the function call
12861*/
12862WDI_Status
12863WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012864(
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 WDI_ControlBlockType* pWDICtx,
12866 WDI_EventInfoType* pEventData
12867)
12868{
12869 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12870 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 wpt_uint16 usDataOffset = 0;
12873 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12876
12877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 -------------------------------------------------------------------------*/
12880 if (( NULL == pEventData ) ||
12881 ( NULL == pEventData->pEventData) ||
12882 ( NULL == pEventData->pCBfnc))
12883 {
12884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012888 }
12889
12890 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12891 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12892 /*-----------------------------------------------------------------------
12893 Get message buffer
12894 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012895 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012896 sizeof(halUpdateBeaconParams),
12897 &pSendBuffer, &usDataOffset, &usSendSize))||
12898 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12899 {
12900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012901 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12903 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012905 }
12906
12907 /*BSS Index of the BSS*/
12908 halUpdateBeaconParams.bssIdx =
12909 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12910 /*shortPreamble mode. HAL should update all the STA rates when it
12911 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12914 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12917 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12920
12921 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012923 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012924 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012926 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012932 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012933 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12934 halUpdateBeaconParams.fRIFSMode =
12935 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012936 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012937 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12938
Jeff Johnsone7245742012-09-05 17:12:55 -070012939 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12940 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012941
12942 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012943 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012944
12945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012946 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012947 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012948 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12949 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012950}/*WDI_ProcessUpdateBeaconParamsReq*/
12951
12952
12953
12954/**
12955 @brief Process Send Beacon template Request function (called when Main FSM
12956 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012957
12958 @param pWDICtx: pointer to the WLAN DAL context
12959 pEventData: pointer to the event information structure
12960
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 @see
12962 @return Result of the function call
12963*/
12964WDI_Status
12965WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012966(
Jeff Johnson295189b2012-06-20 16:38:30 -070012967 WDI_ControlBlockType* pWDICtx,
12968 WDI_EventInfoType* pEventData
12969)
12970{
12971 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12972 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012973 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 wpt_uint16 usDataOffset = 0;
12975 wpt_uint16 usSendSize = 0;
12976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12977
12978 tSendBeaconReqMsg halSendBeaconReq;
12979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012981 -------------------------------------------------------------------------*/
12982 if (( NULL == pEventData ) ||
12983 ( NULL == pEventData->pEventData ) ||
12984 ( NULL == pEventData->pCBfnc ))
12985 {
12986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 }
12991
12992 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12993 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12994 /*-----------------------------------------------------------------------
12995 Get message buffer
12996 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012997 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 sizeof(halSendBeaconReq.sendBeaconParam),
12999 &pSendBuffer, &usDataOffset, &usSendSize))||
13000 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13001 {
13002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013003 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013004 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 }
13008
13009 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13010 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13011 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13014 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13015 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13016 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013017 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013019 /* usP2PIeOffset should be atleast greater than timIeOffset */
13020 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13021 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13022 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13023 {
13024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13025 "Invalid usP2PIeOffset %hu",
13026 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13027 WDI_ASSERT(0);
13028 return WDI_STATUS_E_FAILURE;
13029 }
13030
Jeff Johnsone7245742012-09-05 17:12:55 -070013031 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013033
Jeff Johnsone7245742012-09-05 17:12:55 -070013034 wpalMemoryCopy( pSendBuffer+usDataOffset,
13035 &halSendBeaconReq.sendBeaconParam,
13036 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013037
13038 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013040
13041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013042 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013043 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013044 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13045 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013046}/*WDI_ProcessSendBeaconParamsReq*/
13047
13048/**
13049 @brief Process Update Beacon Params Request function (called when Main FSM
13050 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013051
13052 @param pWDICtx: pointer to the WLAN DAL context
13053 pEventData: pointer to the event information structure
13054
Jeff Johnson295189b2012-06-20 16:38:30 -070013055 @see
13056 @return Result of the function call
13057*/
13058WDI_Status
13059WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013060(
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 WDI_ControlBlockType* pWDICtx,
13062 WDI_EventInfoType* pEventData
13063)
13064{
13065 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13066 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 wpt_uint16 usDataOffset = 0;
13069 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13072
13073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013074 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 -------------------------------------------------------------------------*/
13076 if (( NULL == pEventData ) ||
13077 ( NULL == pEventData->pEventData) ||
13078 ( NULL == pEventData->pCBfnc))
13079 {
13080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 }
13085
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013088 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013089 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13090 /*-----------------------------------------------------------------------
13091 Get message buffer
13092 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013094 sizeof(halUpdateProbeRspTmplParams),
13095 &pSendBuffer, &usDataOffset, &usSendSize))||
13096 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13097 {
13098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013099 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 }
13104
13105 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 WDI_MAC_ADDR_LEN);
13108
Jeff Johnsone7245742012-09-05 17:12:55 -070013109 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13111
13112 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13113 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013115
13116
13117 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13118 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13119 WDI_PROBE_REQ_BITMAP_IE_LEN);
13120
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 wpalMemoryCopy( pSendBuffer+usDataOffset,
13122 &halUpdateProbeRspTmplParams,
13123 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013124
13125 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013127
13128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013129 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13132 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13133 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013134}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13135
13136/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013137 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013139
13140 @param pWDICtx: pointer to the WLAN DAL context
13141 pEventData: pointer to the event information structure
13142
Jeff Johnson295189b2012-06-20 16:38:30 -070013143 @see
13144 @return Result of the function call
13145*/
13146WDI_Status
13147WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013148(
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 WDI_ControlBlockType* pWDICtx,
13150 WDI_EventInfoType* pEventData
13151)
13152{
13153
13154 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13155 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13156
13157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 -------------------------------------------------------------------------*/
13160 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013161 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013162 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013163 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013164 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13165 {
13166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013170 }
13171
13172 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13175
13176 /*cache the wdi nv request message here if the the first fragment
13177 * To issue the request to HAL for the next fragment */
13178 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13179 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13181 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13183
13184 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13185 pWDICtx->pRspCBUserData = pEventData->pUserData;
13186 }
13187
13188 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13189}
13190
13191/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013194
13195 @param pWDICtx: pointer to the WLAN DAL context
13196 pEventData: pointer to the event information structure
13197
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 @see
13199 @return Result of the function call
13200*/
13201WDI_Status WDI_ProcessSetMaxTxPowerReq
13202(
13203 WDI_ControlBlockType* pWDICtx,
13204 WDI_EventInfoType* pEventData
13205)
13206{
13207 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13208 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 wpt_uint16 usDataOffset = 0;
13211 wpt_uint16 usSendSize = 0;
13212 tSetMaxTxPwrReq halSetMaxTxPower;
13213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13214
13215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 -------------------------------------------------------------------------*/
13218 if (( NULL == pEventData ) ||
13219 ( NULL == pEventData->pEventData ) ||
13220 ( NULL == pEventData->pCBfnc ))
13221 {
13222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013226 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013227 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013228 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013229 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013230 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13231
13232 /*-----------------------------------------------------------------------
13233 Get message buffer
13234 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013235if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13237 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013239)))
13240 {
13241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013242 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013243 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 }
13247
13248 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13249 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13250 WDI_MAC_ADDR_LEN);
13251
13252 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13253 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13254 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013257
13258 wpalMemoryCopy( pSendBuffer+usDataOffset,
13259 &halSetMaxTxPower.setMaxTxPwrParams,
13260 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013261
13262 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013264
13265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013266 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013268 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13269 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13270 WDI_SET_MAX_TX_POWER_RESP);
13271
Jeff Johnson295189b2012-06-20 16:38:30 -070013272}
13273
Arif Hussaina5ebce02013-08-09 15:09:58 -070013274/*
13275 @brief Process Set Max Tx Power Per Band Request function (called when Main
13276 FSM allows it)
13277
13278 @param pWDICtx: pointer to the WLAN DAL context
13279 pEventData: pointer to the event information structure
13280
13281 @see
13282 @return Result of the function call
13283*/
13284WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13285(
13286 WDI_ControlBlockType* pWDICtx,
13287 WDI_EventInfoType* pEventData
13288)
13289{
13290 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13291 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13292 wpt_uint8* pSendBuffer = NULL;
13293 wpt_uint16 usDataOffset = 0;
13294 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013295 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013296 WDI_Status rValue = WDI_STATUS_SUCCESS;
13297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13298
13299 /*-------------------------------------------------------------------------
13300 Sanity check
13301 -------------------------------------------------------------------------*/
13302 if (( NULL == pEventData ) ||
13303 ( NULL == pEventData->pEventData ) ||
13304 ( NULL == pEventData->pCBfnc ))
13305 {
13306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13307 "%s: Invalid parameters", __func__);
13308 WDI_ASSERT(0);
13309 return WDI_STATUS_E_FAILURE;
13310 }
13311 pwdiSetMaxTxPowerPerBandParams = \
13312 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13313
13314 wdiSetMaxTxPowerPerBandRspCb = \
13315 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13316
13317 /*-----------------------------------------------------------------------
13318 Get message buffer
13319 -----------------------------------------------------------------------*/
13320
13321 rValue = WDI_GetMessageBuffer(pWDICtx,
13322 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13323 sizeof(tSetMaxTxPwrPerBandParams),
13324 &pSendBuffer, &usDataOffset, &usSendSize);
13325
13326 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13327 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13328 {
13329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13330 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13331 pEventData, pwdiSetMaxTxPowerPerBandParams,
13332 wdiSetMaxTxPowerPerBandRspCb);
13333 WDI_ASSERT(0);
13334 return WDI_STATUS_E_FAILURE;
13335 }
13336
13337
Arif Hussainf8f080c2014-04-03 09:48:36 -070013338 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13339 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013340 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13341
Arif Hussainf8f080c2014-04-03 09:48:36 -070013342 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013343 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13344
13345 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13346 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13347
13348 /*-------------------------------------------------------------------------
13349 Send Set Max Tx Power Per Band Request to HAL
13350 -------------------------------------------------------------------------*/
13351 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13352 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13353 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13354}
13355
schang86c22c42013-03-13 18:41:24 -070013356/**
13357 @brief Process Set Tx Power Request function (called when Main
13358 FSM allows it)
13359
13360 @param pWDICtx: pointer to the WLAN DAL context
13361 pEventData: pointer to the event information structure
13362
13363 @see
13364 @return Result of the function call
13365*/
13366WDI_Status WDI_ProcessSetTxPowerReq
13367(
13368 WDI_ControlBlockType* pWDICtx,
13369 WDI_EventInfoType* pEventData
13370)
13371{
13372 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13373 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13374 wpt_uint8* pSendBuffer = NULL;
13375 wpt_uint16 usDataOffset = 0;
13376 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013377 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13379
13380 /*-------------------------------------------------------------------------
13381 Sanity check
13382 -------------------------------------------------------------------------*/
13383 if (( NULL == pEventData ) ||
13384 ( NULL == pEventData->pEventData ) ||
13385 ( NULL == pEventData->pCBfnc ))
13386 {
13387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13388 "%s: Invalid parameters", __func__);
13389 WDI_ASSERT(0);
13390 return WDI_STATUS_E_FAILURE;
13391 }
13392
13393 pwdiSetTxPowerParams =
13394 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13395 wdiSetTxPowerRspCb =
13396 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13397
13398 /*-----------------------------------------------------------------------
13399 Get message buffer
13400 -----------------------------------------------------------------------*/
13401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13402 sizeof(tSetTxPwrReqParams),
13403 &pSendBuffer, &usDataOffset, &usSendSize))||
13404 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13405 )))
13406 {
13407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013408 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013409 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13410 WDI_ASSERT(0);
13411 return WDI_STATUS_E_FAILURE;
13412 }
13413
Leo Chang9a43db92013-03-25 17:39:58 -070013414 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13415 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13416 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013417
13418 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13419 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13420
13421 /*-------------------------------------------------------------------------
13422 Send Set Tx Power Request to HAL
13423 -------------------------------------------------------------------------*/
13424 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13425 wdiSetTxPowerRspCb, pEventData->pUserData,
13426 WDI_SET_TX_POWER_RESP);
13427}
Jeff Johnson295189b2012-06-20 16:38:30 -070013428
13429/**
13430 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13431 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013432
13433 @param pWDICtx: pointer to the WLAN DAL context
13434 pEventData: pointer to the event information structure
13435
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 @see
13437 @return Result of the function call
13438*/
13439WDI_Status
13440WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013441(
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 WDI_ControlBlockType* pWDICtx,
13443 WDI_EventInfoType* pEventData
13444)
13445{
13446 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13447 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 wpt_uint16 usDataOffset = 0;
13450 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13453
13454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 -------------------------------------------------------------------------*/
13457 if (( NULL == pEventData ) ||
13458 ( NULL == pEventData->pEventData) ||
13459 ( NULL == pEventData->pCBfnc))
13460 {
13461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 }
13466
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13471 /*-----------------------------------------------------------------------
13472 Get message buffer
13473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13475 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 sizeof(halSetP2PGONOAParams),
13477 &pSendBuffer, &usDataOffset, &usSendSize))||
13478 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13479 {
13480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013481 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013485 }
13486
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13491 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013497 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013498 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13500
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 wpalMemoryCopy( pSendBuffer+usDataOffset,
13502 &halSetP2PGONOAParams,
13503 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013504
13505 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013506 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013507
13508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013509 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013511 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13512 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13513 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013514}/*WDI_ProcessP2PGONOAReq*/
13515
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013516#ifdef FEATURE_WLAN_TDLS
13517
13518/**
13519 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13520 allows it)
13521
13522 @param pWDICtx: pointer to the WLAN DAL context
13523 pEventData: pointer to the event information structure
13524
13525 @see
13526 @return Result of the function call
13527*/
13528WDI_Status
13529WDI_ProcessTdlsLinkEstablishReq
13530(
13531 WDI_ControlBlockType* pWDICtx,
13532 WDI_EventInfoType* pEventData
13533)
13534{
13535 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13536 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13537 wpt_uint8* pSendBuffer = NULL;
13538 wpt_uint16 usDataOffset = 0;
13539 wpt_uint16 usSendSize = 0;
13540
13541 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13543
13544 /*-------------------------------------------------------------------------
13545 Sanity check
13546 -------------------------------------------------------------------------*/
13547 if (( NULL == pEventData ) ||
13548 ( NULL == pEventData->pEventData) ||
13549 ( NULL == pEventData->pCBfnc))
13550 {
13551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13552 "%s: Invalid parameters", __func__);
13553 WDI_ASSERT(0);
13554 return WDI_STATUS_E_FAILURE;
13555 }
13556 pwdiTDLSLinkEstablishReqParams =
13557 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13558 wdiTDLSLinkEstablishReqRspCb =
13559 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13560
13561
13562 /*-----------------------------------------------------------------------
13563 Get message buffer
13564 -----------------------------------------------------------------------*/
13565 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13566 WDI_TDLS_LINK_ESTABLISH_REQ,
13567 sizeof(halSetTDLSLinkEstablishParams),
13568 &pSendBuffer, &usDataOffset, &usSendSize))||
13569 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13570 {
13571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013572 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013573 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13574 WDI_ASSERT(0);
13575 return WDI_STATUS_E_FAILURE;
13576 }
13577
13578 halSetTDLSLinkEstablishParams.staIdx =
13579 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13580 halSetTDLSLinkEstablishParams.bIsResponder =
13581 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13582 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13583 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13584 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13585 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13586 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13587 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13588 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13589 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13590 halSetTDLSLinkEstablishParams.aAck = 0;
13591 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13592 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13593 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013594 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13595 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13596
13597 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13598 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13599 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13600 halSetTDLSLinkEstablishParams.validChannelsLen =
13601 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13602
13603 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13604 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13605 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13606 halSetTDLSLinkEstablishParams.validOperClassesLen =
13607 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013608
13609 wpalMemoryCopy( pSendBuffer+usDataOffset,
13610 &halSetTDLSLinkEstablishParams,
13611 sizeof(halSetTDLSLinkEstablishParams));
13612
13613 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13614 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13615
13616 /*-------------------------------------------------------------------------
13617 Send Update Probe Resp Template Request to HAL
13618 -------------------------------------------------------------------------*/
13619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13620 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13621 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13622 return 0;
13623}/*WDI_ProcessTdlsLinkEstablishReq*/
13624
13625
Atul Mittalc0f739f2014-07-31 13:47:47 +053013626/**
13627 @brief sends the channel switch command to f/w (called when Main FSM
13628 allows it)
13629
13630 @param pWDICtx: pointer to the WLAN DAL context
13631 pEventData: pointer to the event information structure
13632
13633 @see
13634 @return Result of the function call
13635*/
13636WDI_Status
13637WDI_ProcessTdlsChanSwitchReq
13638(
13639 WDI_ControlBlockType* pWDICtx,
13640 WDI_EventInfoType* pEventData
13641)
13642{
13643 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13644 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13645 wpt_uint8* pSendBuffer = NULL;
13646 wpt_uint16 usDataOffset = 0;
13647 wpt_uint16 usSendSize = 0;
13648 //WDI_Status wdiStatus;
13649 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13651
13652 /*-------------------------------------------------------------------------
13653 Sanity check
13654 -------------------------------------------------------------------------*/
13655 if (( NULL == pEventData ) ||
13656 ( NULL == pEventData->pEventData))
13657 {
13658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13659 "%s: Invalid parameters", __func__);
13660 WDI_ASSERT(0);
13661 return WDI_STATUS_E_FAILURE;
13662 }
13663 pwdiTDLSChanSwitchReqParams =
13664 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13665 wdiTDLSChanSwitchReqRspCb =
13666 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13667
13668 /*-----------------------------------------------------------------------
13669 Get message buffer
13670 -----------------------------------------------------------------------*/
13671 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13672 WDI_TDLS_CHAN_SWITCH_REQ,
13673 sizeof(halSetTDLSChanSwitchParams),
13674 &pSendBuffer, &usDataOffset, &usSendSize))||
13675 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13676 {
13677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13678 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13679 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13680 WDI_ASSERT(0);
13681 return WDI_STATUS_E_FAILURE;
13682 }
13683
13684 halSetTDLSChanSwitchParams.staIdx =
13685 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13686 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13687 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13688 halSetTDLSChanSwitchParams.targetOperClass =
13689 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13690 halSetTDLSChanSwitchParams.targetChannel =
13691 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13692 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13693 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13694 wpalMemoryCopy( pSendBuffer+usDataOffset,
13695 &halSetTDLSChanSwitchParams,
13696 sizeof(halSetTDLSChanSwitchParams));
13697
13698 pWDICtx->wdiReqStatusCB = NULL;
13699 pWDICtx->pReqStatusUserData = NULL;
13700
13701 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13702 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13703 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13704}/*WDI_ProcessTdlsChanSwitchReq*/
13705
13706#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013707
Jeff Johnson295189b2012-06-20 16:38:30 -070013708
13709
13710/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013711 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 @param None
13714
13715 @see
13716 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013717*/
13718void
13719WDI_SetPowerStateCb
13720(
13721 wpt_status status,
13722 unsigned int dxePhyAddr,
13723 void *pContext
13724)
13725{
13726 wpt_status wptStatus;
13727 WDI_ControlBlockType *pCB = NULL;
13728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013729 /*
13730 * Trigger the event to bring the Enter BMPS req function to come
13731 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013732*/
13733 if( NULL != pContext )
13734 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013735 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 }
13737 else
13738 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 pCB = &gWDICb;
13741 }
Mihir Shetea4306052014-03-25 00:02:54 +053013742
13743 if(eWLAN_PAL_STATUS_SUCCESS == status )
13744 {
13745 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13746 }
13747 else
13748 {
13749 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13750 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 pCB->dxePhyAddr = dxePhyAddr;
13752 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13753 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13754 {
13755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13756 "Failed to set an event");
13757
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 }
13760 return;
13761}
13762
13763
13764/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013767
13768 @param pWDICtx: pointer to the WLAN DAL context
13769 pEventData: pointer to the event information structure
13770
Jeff Johnson295189b2012-06-20 16:38:30 -070013771 @see
13772 @return Result of the function call
13773*/
13774WDI_Status
13775WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013776(
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 WDI_ControlBlockType* pWDICtx,
13778 WDI_EventInfoType* pEventData
13779)
13780{
Jeff Johnson43971f52012-07-17 12:26:56 -070013781 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 wpt_uint16 usDataOffset = 0;
13785 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013786 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13788
13789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013792 if ((NULL == pEventData ) ||
13793 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13794 (NULL == (pwdiEnterImpsReqParams =
13795 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013796 {
13797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013799 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013800 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013801 }
13802
13803 /*-----------------------------------------------------------------------
13804 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013805 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013806 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013807 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013808 0,
13809 &pSendBuffer, &usDataOffset, &usSendSize))||
13810 ( usSendSize < (usDataOffset )))
13811 {
13812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013813 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013814 pEventData, wdiEnterImpsRspCb);
13815 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013816 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013817 }
13818
13819 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013820 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13821 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013822 {
13823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13824 "WDI Init failed to reset an event");
13825
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013827 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013828 }
13829
13830 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013831 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13832 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013834 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013835 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013836 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013837 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013838
13839 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013840 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013841 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013842 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13843 WDI_SET_POWER_STATE_TIMEOUT);
13844 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013845 {
13846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13847 "WDI Init failed to wait on an event");
13848
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013850 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 }
13852
Mihir Shetea4306052014-03-25 00:02:54 +053013853 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13854 {
13855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13856 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13857
13858 goto fail;
13859 }
13860
13861 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13862 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013866 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13867 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013868
13869fail:
13870 // Release the message buffer so we don't leak
13871 wpalMemoryFree(pSendBuffer);
13872
13873failRequest:
13874 //WDA should have failure check to avoid the memory leak
13875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013876}/*WDI_ProcessEnterImpsReq*/
13877
13878/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013879 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013880 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013881
13882 @param pWDICtx: pointer to the WLAN DAL context
13883 pEventData: pointer to the event information structure
13884
Jeff Johnson295189b2012-06-20 16:38:30 -070013885 @see
13886 @return Result of the function call
13887*/
13888WDI_Status
13889WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013890(
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 WDI_ControlBlockType* pWDICtx,
13892 WDI_EventInfoType* pEventData
13893)
13894{
13895 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 wpt_uint16 usDataOffset = 0;
13898 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053013899 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13901
13902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013904 -------------------------------------------------------------------------*/
13905 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053013906 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
13907 (NULL == (pwdiExitImpsReqParams =
13908 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013909 {
13910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013914 }
13915
13916 /*-----------------------------------------------------------------------
13917 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013920 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013921 0,
13922 &pSendBuffer, &usDataOffset, &usSendSize))||
13923 ( usSendSize < (usDataOffset )))
13924 {
13925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013926 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 pEventData, wdiExitImpsRspCb);
13928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053013931 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
13932 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013934 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013936 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13937 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013938}/*WDI_ProcessExitImpsReq*/
13939
13940/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013941 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013942 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013943
13944 @param pWDICtx: pointer to the WLAN DAL context
13945 pEventData: pointer to the event information structure
13946
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 @see
13948 @return Result of the function call
13949*/
13950WDI_Status
13951WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013952(
Jeff Johnson295189b2012-06-20 16:38:30 -070013953 WDI_ControlBlockType* pWDICtx,
13954 WDI_EventInfoType* pEventData
13955)
13956{
13957 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13958 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013959 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013960 wpt_uint16 usDataOffset = 0;
13961 wpt_uint16 usSendSize = 0;
13962 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013963 wpt_status wptStatus;
13964
Jeff Johnson295189b2012-06-20 16:38:30 -070013965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13966
13967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 -------------------------------------------------------------------------*/
13970 if (( NULL == pEventData ) ||
13971 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13972 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13973 {
13974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013977 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 }
13979
13980 /*-----------------------------------------------------------------------
13981 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 sizeof(enterBmpsReq),
13986 &pSendBuffer, &usDataOffset, &usSendSize))||
13987 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13988 {
13989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013990 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13992 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013993 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 }
13995
13996 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013997 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13998 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013999 {
14000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14001 "WDI Init failed to reset an event");
14002
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014004 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 }
14006
14007 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014008 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14009 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14010 {
14011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014012 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014013 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014014 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014015 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014016
14017/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014018 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014019 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014020 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14021 WDI_SET_POWER_STATE_TIMEOUT);
14022 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 {
14024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14025 "WDI Init failed to wait on an event");
14026
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014028 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 }
14030
14031 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14032
14033 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14034 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14035 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14036 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14037
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014038 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014039 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14040 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14041 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14042
14043 wpalMemoryCopy( pSendBuffer+usDataOffset,
14044 &enterBmpsReq,
14045 sizeof(enterBmpsReq));
14046
14047 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014048 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014049
14050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014051 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14054 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014055
14056fail:
14057 // Release the message buffer so we don't leak
14058 wpalMemoryFree(pSendBuffer);
14059
14060failRequest:
14061 //WDA should have failure check to avoid the memory leak
14062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014063}/*WDI_ProcessEnterBmpsReq*/
14064
14065/**
14066 @brief Process Exit BMPS Request function (called when Main FSM
14067 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014068
14069 @param pWDICtx: pointer to the WLAN DAL context
14070 pEventData: pointer to the event information structure
14071
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 @see
14073 @return Result of the function call
14074*/
14075WDI_Status
14076WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014077(
Jeff Johnson295189b2012-06-20 16:38:30 -070014078 WDI_ControlBlockType* pWDICtx,
14079 WDI_EventInfoType* pEventData
14080)
14081{
14082 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14083 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014084 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 wpt_uint16 usDataOffset = 0;
14086 wpt_uint16 usSendSize = 0;
14087 tHalExitBmpsReqParams exitBmpsReq;
14088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14089
14090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 -------------------------------------------------------------------------*/
14093 if (( NULL == pEventData ) ||
14094 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14095 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14096 {
14097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014101 }
14102
14103 /*-----------------------------------------------------------------------
14104 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014105 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 sizeof(exitBmpsReq),
14109 &pSendBuffer, &usDataOffset, &usSendSize))||
14110 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14111 {
14112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014113 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014114 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014117 }
14118 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14119
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14121
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 wpalMemoryCopy( pSendBuffer+usDataOffset,
14123 &exitBmpsReq,
14124 sizeof(exitBmpsReq));
14125
14126 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014128
14129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014130 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014131 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014132 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14133 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014134}/*WDI_ProcessExitBmpsReq*/
14135
14136/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014139
14140 @param pWDICtx: pointer to the WLAN DAL context
14141 pEventData: pointer to the event information structure
14142
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 @see
14144 @return Result of the function call
14145*/
14146WDI_Status
14147WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014148(
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 WDI_ControlBlockType* pWDICtx,
14150 WDI_EventInfoType* pEventData
14151)
14152{
14153 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14154 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014155 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014156 wpt_uint16 usDataOffset = 0;
14157 wpt_uint16 usSendSize = 0;
14158 tUapsdReqParams enterUapsdReq;
14159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14160
14161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014163 -------------------------------------------------------------------------*/
14164 if (( NULL == pEventData ) ||
14165 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14166 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14167 {
14168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 }
14173
14174 /*-----------------------------------------------------------------------
14175 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014176 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014177 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014178 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014179 sizeof(enterUapsdReq),
14180 &pSendBuffer, &usDataOffset, &usSendSize))||
14181 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14182 {
14183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014184 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 }
14189
14190 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14191 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14192 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14193 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14194 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14195 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14196 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14197 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014198 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014199
Jeff Johnsone7245742012-09-05 17:12:55 -070014200 wpalMemoryCopy( pSendBuffer+usDataOffset,
14201 &enterUapsdReq,
14202 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014203
14204 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014205 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014206
14207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014208 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014210 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14211 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014212}/*WDI_ProcessEnterUapsdReq*/
14213
14214/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014215 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014216 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014217
14218 @param pWDICtx: pointer to the WLAN DAL context
14219 pEventData: pointer to the event information structure
14220
Jeff Johnson295189b2012-06-20 16:38:30 -070014221 @see
14222 @return Result of the function call
14223*/
14224WDI_Status
14225WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014226(
Jeff Johnson295189b2012-06-20 16:38:30 -070014227 WDI_ControlBlockType* pWDICtx,
14228 WDI_EventInfoType* pEventData
14229)
14230{
14231 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014232 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014233 wpt_uint16 usDataOffset = 0;
14234 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014235 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14236 wpt_uint8 bssIdx = 0;
14237
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14239
14240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014242 -------------------------------------------------------------------------*/
14243 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014244 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14246 {
14247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 }
14252
14253 /*-----------------------------------------------------------------------
14254 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014258 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014260 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014261 {
14262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014263 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 pEventData, wdiExitUapsdRspCb);
14265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 }
14268
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014269 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14270
14271 wpalMemoryCopy( pSendBuffer+usDataOffset,
14272 &bssIdx,
14273 sizeof(wpt_uint8));
14274
14275 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14276 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14277
Jeff Johnson295189b2012-06-20 16:38:30 -070014278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014279 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014281 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14282 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014283}/*WDI_ProcessExitUapsdReq*/
14284
14285/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014286 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014287 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014288
14289 @param pWDICtx: pointer to the WLAN DAL context
14290 pEventData: pointer to the event information structure
14291
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 @see
14293 @return Result of the function call
14294*/
14295WDI_Status
14296WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014297(
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 WDI_ControlBlockType* pWDICtx,
14299 WDI_EventInfoType* pEventData
14300)
14301{
14302 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14303 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014304 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014305 wpt_uint16 usDataOffset = 0;
14306 wpt_uint16 usSendSize = 0;
14307 tUapsdInfo uapsdAcParamsReq;
14308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14309
14310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 -------------------------------------------------------------------------*/
14313 if (( NULL == pEventData ) ||
14314 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14315 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14316 {
14317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 }
14322
14323 /*-----------------------------------------------------------------------
14324 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014325 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 sizeof(uapsdAcParamsReq),
14329 &pSendBuffer, &usDataOffset, &usSendSize))||
14330 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14331 {
14332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014333 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014334 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014337 }
14338
14339 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14340 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14341 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14342 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14343 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14344 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14345
Jeff Johnsone7245742012-09-05 17:12:55 -070014346 wpalMemoryCopy( pSendBuffer+usDataOffset,
14347 &uapsdAcParamsReq,
14348 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014349
14350 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014351 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014352
14353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014354 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014355 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014356 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14357 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014358}/*WDI_ProcessSetUapsdAcParamsReq*/
14359
14360/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014361 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014363
14364 @param pWDICtx: pointer to the WLAN DAL context
14365 pEventData: pointer to the event information structure
14366
Jeff Johnson295189b2012-06-20 16:38:30 -070014367 @see
14368 @return Result of the function call
14369*/
14370WDI_Status
14371WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014372(
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 WDI_ControlBlockType* pWDICtx,
14374 WDI_EventInfoType* pEventData
14375)
14376{
14377 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14378 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 wpt_uint16 usDataOffset = 0;
14381 wpt_uint16 usSendSize = 0;
14382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14383
14384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 -------------------------------------------------------------------------*/
14387 if (( NULL == pEventData ) ||
14388 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14389 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14390 {
14391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 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 /*-----------------------------------------------------------------------
14398 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014399 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14403 &pSendBuffer, &usDataOffset, &usSendSize))||
14404 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14405 {
14406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014407 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 }
14412
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 wpalMemoryCopy( pSendBuffer+usDataOffset,
14414 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14415 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014416
14417 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014419
14420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14424 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014425}/*WDI_ProcessUpdateUapsdParamsReq*/
14426
14427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014428 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014430
14431 @param pWDICtx: pointer to the WLAN DAL context
14432 pEventData: pointer to the event information structure
14433
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 @see
14435 @return Result of the function call
14436*/
14437WDI_Status
14438WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014439(
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 WDI_ControlBlockType* pWDICtx,
14441 WDI_EventInfoType* pEventData
14442)
14443{
14444 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14445 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014446 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 wpt_uint16 usDataOffset = 0;
14448 wpt_uint16 usSendSize = 0;
14449 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14450
14451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14452
14453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 -------------------------------------------------------------------------*/
14456 if (( NULL == pEventData ) ||
14457 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14458 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14459 {
14460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 }
14465
14466 /*-----------------------------------------------------------------------
14467 Get message buffer
14468 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014469 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014470 sizeof(halRxpFilterParams),
14471 &pSendBuffer, &usDataOffset, &usSendSize))||
14472 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14473 {
14474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014475 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 }
14480
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14485
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 wpalMemoryCopy( pSendBuffer+usDataOffset,
14487 &halRxpFilterParams,
14488 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014489
14490 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014492
14493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014494 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014496 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14497 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014498}/*WDI_ProcessConfigureRxpFilterReq*/
14499
14500/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014501 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014502 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014503
14504 @param pWDICtx: pointer to the WLAN DAL context
14505 pEventData: pointer to the event information structure
14506
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 @see
14508 @return Result of the function call
14509*/
14510WDI_Status
14511WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014512(
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 WDI_ControlBlockType* pWDICtx,
14514 WDI_EventInfoType* pEventData
14515)
14516{
14517 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14518 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014519 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014520 wpt_uint16 usDataOffset = 0;
14521 wpt_uint16 usSendSize = 0;
14522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14523
14524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 -------------------------------------------------------------------------*/
14527 if (( NULL == pEventData ) ||
14528 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14529 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14530 {
14531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 }
14536
14537 /*-----------------------------------------------------------------------
14538 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014539 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14543 &pSendBuffer, &usDataOffset, &usSendSize))||
14544 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14545 {
14546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014547 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014548 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 }
14552
Jeff Johnsone7245742012-09-05 17:12:55 -070014553 wpalMemoryCopy( pSendBuffer+usDataOffset,
14554 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14555 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14556 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14557 &pwdiBeaconFilterParams->aFilters[0],
14558 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014559
14560 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014562
14563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14567 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014568}/*WDI_ProcessSetBeaconFilterReq*/
14569
14570/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014573
14574 @param pWDICtx: pointer to the WLAN DAL context
14575 pEventData: pointer to the event information structure
14576
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 @see
14578 @return Result of the function call
14579*/
14580WDI_Status
14581WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014582(
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 WDI_ControlBlockType* pWDICtx,
14584 WDI_EventInfoType* pEventData
14585)
14586{
14587 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14588 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 wpt_uint16 usDataOffset = 0;
14591 wpt_uint16 usSendSize = 0;
14592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14593
14594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014596 -------------------------------------------------------------------------*/
14597 if (( NULL == pEventData ) ||
14598 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14599 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14600 {
14601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014602 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014605 }
14606
14607 /*-----------------------------------------------------------------------
14608 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14613 &pSendBuffer, &usDataOffset, &usSendSize))||
14614 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14615 {
14616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014617 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 }
14622
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 wpalMemoryCopy( pSendBuffer+usDataOffset,
14624 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14625 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014626
14627 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014629
14630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14634 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014635}
14636
14637/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014638 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014640
14641 @param pWDICtx: pointer to the WLAN DAL context
14642 pEventData: pointer to the event information structure
14643
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 @see
14645 @return Result of the function call
14646*/
14647WDI_Status
14648WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014649(
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 WDI_ControlBlockType* pWDICtx,
14651 WDI_EventInfoType* pEventData
14652)
14653{
14654 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14655 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014656 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 wpt_uint16 usDataOffset = 0;
14658 wpt_uint16 usSendSize = 0;
14659 tHalRSSIThresholds rssiThresholdsReq;
14660 WDI_Status ret_status = 0;
14661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14662
14663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 -------------------------------------------------------------------------*/
14666 if (( NULL == pEventData ) ||
14667 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14668 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14669 {
14670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 }
14675
14676 /*-----------------------------------------------------------------------
14677 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014678 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 sizeof(rssiThresholdsReq),
14682 &pSendBuffer, &usDataOffset, &usSendSize))||
14683 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14684 {
14685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014686 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 }
14691
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014696 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014701 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014702 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014703 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014704 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014708 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014710 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14712
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 wpalMemoryCopy( pSendBuffer+usDataOffset,
14714 &rssiThresholdsReq,
14715 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014716
14717 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014718 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014719
14720 /*-------------------------------------------------------------------------
14721 Send Set threshold req to HAL
14722 -------------------------------------------------------------------------*/
14723 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14724 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14725 {
14726 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14727 // req. Then as a result of processing the threshold cross ind, we trigger
14728 // a Set threshold req, then we need to indicate to WDI that it needs to
14729 // go to busy state as a result of the indication as we sent a req in the
14730 // same WDI context.
14731 // Hence expected state transition is to busy.
14732 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14733 }
14734
14735 return ret_status;
14736}
14737
14738/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014741
14742 @param pWDICtx: pointer to the WLAN DAL context
14743 pEventData: pointer to the event information structure
14744
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 @see
14746 @return Result of the function call
14747*/
14748WDI_Status
14749WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014750(
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 WDI_ControlBlockType* pWDICtx,
14752 WDI_EventInfoType* pEventData
14753)
14754{
14755 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14756 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 wpt_uint16 usDataOffset = 0;
14759 wpt_uint16 usSendSize = 0;
14760 tHalHostOffloadReq hostOffloadParams;
14761 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014762 wpt_uint8 ucCurrentBSSSesIdx = 0;
14763 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014764
14765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14766
14767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 -------------------------------------------------------------------------*/
14770 if (( NULL == pEventData ) ||
14771 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14772 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14773 {
14774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014775 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014776 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014777 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 }
14779
14780 /*-----------------------------------------------------------------------
14781 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014782 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14786 &pSendBuffer, &usDataOffset, &usSendSize))||
14787 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14788 {
14789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014790 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14792 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014793 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 }
14795
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014796 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14797 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14798 &pBSSSes);
14799 if ( NULL == pBSSSes )
14800 {
c_hpothu86feba52014-10-28 15:51:18 +053014801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014802 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14803 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014804 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014805 }
14806
Jeff Johnson295189b2012-06-20 16:38:30 -070014807 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14808 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014809
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14811 {
14812 // ARP Offload
14813 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14814 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14815 4);
14816 }
14817 else
14818 {
14819 // NS Offload
14820 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14821 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14822 16);
14823
14824#ifdef WLAN_NS_OFFLOAD
14825 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14826 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14827 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14828 16);
14829 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14830 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14831 16);
14832 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14833 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14834 16);
14835 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14836 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14837 16);
14838 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14839 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14840 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014841 nsOffloadParams.srcIPv6AddrValid =
14842 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14843
14844 nsOffloadParams.targetIPv6Addr1Valid =
14845 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14846
14847 nsOffloadParams.targetIPv6Addr2Valid =
14848 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14849
14850 nsOffloadParams.slotIndex =
14851 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014852
Jeff Johnson295189b2012-06-20 16:38:30 -070014853#endif // WLAN_NS_OFFLOAD
14854 }
14855
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014856 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14857
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 // copy hostOffloadParams into pSendBuffer
14859 wpalMemoryCopy( pSendBuffer+usDataOffset,
14860 &hostOffloadParams,
14861 sizeof(hostOffloadParams));
14862
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014863 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014865 // copy nsOffloadParams into pSendBuffer
14866 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 &nsOffloadParams,
14868 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014869 }
14870 else
14871 {
14872#ifdef WLAN_NS_OFFLOAD
14873 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14874 {
14875 // copy nsOffloadParams into pSendBuffer
14876 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14877 &nsOffloadParams,
14878 sizeof(nsOffloadParams));
14879 }
14880#endif
14881 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014882
14883 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014885
14886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014889 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14890 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014891
14892fail:
14893 // Release the message buffer so we don't leak
14894 wpalMemoryFree(pSendBuffer);
14895
14896failRequest:
14897 //WDA should have failure check to avoid the memory leak
14898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014899}/*WDI_ProcessHostOffloadReq*/
14900
14901/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014904
14905 @param pWDICtx: pointer to the WLAN DAL context
14906 pEventData: pointer to the event information structure
14907
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 @see
14909 @return Result of the function call
14910*/
14911WDI_Status
14912WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014913(
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 WDI_ControlBlockType* pWDICtx,
14915 WDI_EventInfoType* pEventData
14916)
14917{
14918 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14919 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 wpt_uint16 usDataOffset = 0;
14922 wpt_uint16 usSendSize = 0;
14923 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014924 wpt_uint8 ucCurrentBSSSesIdx = 0;
14925 WDI_BSSSessionType* pBSSSes = NULL;
14926
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14928
14929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 -------------------------------------------------------------------------*/
14932 if (( NULL == pEventData ) ||
14933 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14934 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14935 {
14936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14937 "Invalid parameters in Keep Alive req");
14938 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014939 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 }
14941
14942 /*-----------------------------------------------------------------------
14943 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 sizeof(keepAliveReq),
14948 &pSendBuffer, &usDataOffset, &usSendSize))||
14949 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14950 {
14951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014952 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14954 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014955 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 }
14957
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014958 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14959 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14960 &pBSSSes);
14961 if ( NULL == pBSSSes )
14962 {
14963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014964 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014965 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014966 }
14967
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14969 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14970
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014971 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014972
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14974 {
14975 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14976 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14977 HAL_IPV4_ADDR_LEN);
14978 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14979 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014980 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 wpalMemoryCopy(keepAliveReq.destMacAddr,
14982 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14983 HAL_MAC_ADDR_LEN);
14984 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014985
14986 wpalMemoryCopy( pSendBuffer+usDataOffset,
14987 &keepAliveReq,
14988 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014989
14990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014991 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014992
14993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014994 "Process keep alive req time period %d",
14995 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014996
14997 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014998 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014999
15000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15001 "Sending keep alive req to HAL");
15002
15003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015004 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015005 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15007 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015008
15009fail:
15010 // Release the message buffer so we don't leak
15011 wpalMemoryFree(pSendBuffer);
15012
15013failRequest:
15014 //WDA should have failure check to avoid the memory leak
15015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015016}/*WDI_ProcessKeepAliveReq*/
15017
15018
15019/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015020 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015021 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015022
15023 @param pWDICtx: pointer to the WLAN DAL context
15024 pEventData: pointer to the event information structure
15025
Jeff Johnson295189b2012-06-20 16:38:30 -070015026 @see
15027 @return Result of the function call
15028*/
15029WDI_Status
15030WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015031(
Jeff Johnson295189b2012-06-20 16:38:30 -070015032 WDI_ControlBlockType* pWDICtx,
15033 WDI_EventInfoType* pEventData
15034)
15035{
15036 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15037 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 wpt_uint16 usDataOffset = 0;
15040 wpt_uint16 usSendSize = 0;
15041 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015042 wpt_uint8 ucCurrentBSSSesIdx = 0;
15043 WDI_BSSSessionType* pBSSSes = NULL;
15044
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15046
15047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 -------------------------------------------------------------------------*/
15050 if (( NULL == pEventData ) ||
15051 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15052 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15053 {
15054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015057 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 }
15059
15060 /*-----------------------------------------------------------------------
15061 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015064 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 sizeof(wowlAddBcPtrnReq),
15066 &pSendBuffer, &usDataOffset, &usSendSize))||
15067 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15068 {
15069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015070 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15072 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015073 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015074 }
15075
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015076 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15077 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15078 &pBSSSes);
15079 if ( NULL == pBSSSes )
15080 {
15081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015082 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015083 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015084 }
15085
Jeff Johnsone7245742012-09-05 17:12:55 -070015086 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015089 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015090 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015091 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015092 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15094
15095 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15096 {
15097 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15098 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15099 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15100 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15101 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15102 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15103 }
15104 else
15105 {
15106 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15107 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15108 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15109 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15110 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15111 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15112
15113 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15114 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15115 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15116 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15117 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15118 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15119 }
15120
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015121 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15122
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 wpalMemoryCopy( pSendBuffer+usDataOffset,
15124 &wowlAddBcPtrnReq,
15125 sizeof(wowlAddBcPtrnReq));
15126
15127 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015128 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015129
15130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015131 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15134 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015135fail:
15136 // Release the message buffer so we don't leak
15137 wpalMemoryFree(pSendBuffer);
15138
15139failRequest:
15140 //WDA should have failure check to avoid the memory leak
15141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015142}/*WDI_ProcessWowlAddBcPtrnReq*/
15143
15144/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015145 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015146 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015147
15148 @param pWDICtx: pointer to the WLAN DAL context
15149 pEventData: pointer to the event information structure
15150
Jeff Johnson295189b2012-06-20 16:38:30 -070015151 @see
15152 @return Result of the function call
15153*/
15154WDI_Status
15155WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015156(
Jeff Johnson295189b2012-06-20 16:38:30 -070015157 WDI_ControlBlockType* pWDICtx,
15158 WDI_EventInfoType* pEventData
15159)
15160{
15161 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15162 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 wpt_uint16 usDataOffset = 0;
15165 wpt_uint16 usSendSize = 0;
15166 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015167 wpt_uint8 ucCurrentBSSSesIdx = 0;
15168 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15170
15171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 -------------------------------------------------------------------------*/
15174 if (( NULL == pEventData ) ||
15175 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15176 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15177 {
15178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015181 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 }
15183
15184 /*-----------------------------------------------------------------------
15185 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 sizeof(wowlDelBcPtrnReq),
15190 &pSendBuffer, &usDataOffset, &usSendSize))||
15191 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15192 {
15193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015194 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15196 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015197 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015198 }
15199
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015200 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15201 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15202 &pBSSSes);
15203 if ( NULL == pBSSSes )
15204 {
15205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015206 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015207 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015208 }
15209
Jeff Johnsone7245742012-09-05 17:12:55 -070015210 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015212
15213 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15214
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 wpalMemoryCopy( pSendBuffer+usDataOffset,
15216 &wowlDelBcPtrnReq,
15217 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015218
15219 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015221
15222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15226 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015227
15228fail:
15229 // Release the message buffer so we don't leak
15230 wpalMemoryFree(pSendBuffer);
15231
15232failRequest:
15233 //WDA should have failure check to avoid the memory leak
15234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015235}/*WDI_ProcessWowlDelBcPtrnReq*/
15236
15237/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015238 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015240
15241 @param pWDICtx: pointer to the WLAN DAL context
15242 pEventData: pointer to the event information structure
15243
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 @see
15245 @return Result of the function call
15246*/
15247WDI_Status
15248WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015249(
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 WDI_ControlBlockType* pWDICtx,
15251 WDI_EventInfoType* pEventData
15252)
15253{
15254 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15255 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 wpt_uint16 usDataOffset = 0;
15258 wpt_uint16 usSendSize = 0;
15259 tHalWowlEnterParams wowlEnterReq;
15260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15261
15262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015264 -------------------------------------------------------------------------*/
15265 if (( NULL == pEventData ) ||
15266 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15267 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15268 {
15269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 }
15274
15275 /*-----------------------------------------------------------------------
15276 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015280 sizeof(wowlEnterReq),
15281 &pSendBuffer, &usDataOffset, &usSendSize))||
15282 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15283 {
15284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015285 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 }
15290
Kumar Anandaca924e2013-07-22 14:35:34 -070015291 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15292
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015297 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015301 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015303 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015305 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015306 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015307 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15309
15310#ifdef WLAN_WAKEUP_EVENTS
15311 wowlEnterReq.ucWoWEAPIDRequestEnable =
15312 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15313
15314 wowlEnterReq.ucWoWEAPOL4WayEnable =
15315 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15316
15317 wowlEnterReq.ucWowNetScanOffloadMatch =
15318 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15319
15320 wowlEnterReq.ucWowGTKRekeyError =
15321 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15322
15323 wowlEnterReq.ucWoWBSSConnLoss =
15324 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15325#endif // WLAN_WAKEUP_EVENTS
15326
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015327 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15328
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15330 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15331 sizeof(tSirMacAddr));
15332
Jeff Johnsone7245742012-09-05 17:12:55 -070015333 wpalMemoryCopy( pSendBuffer+usDataOffset,
15334 &wowlEnterReq,
15335 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015336
15337 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015339
15340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015342 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015343 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15344 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015345}/*WDI_ProcessWowlEnterReq*/
15346
15347/**
15348 @brief Process Wowl exit Request function (called when Main FSM
15349 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015350
15351 @param pWDICtx: pointer to the WLAN DAL context
15352 pEventData: pointer to the event information structure
15353
Jeff Johnson295189b2012-06-20 16:38:30 -070015354 @see
15355 @return Result of the function call
15356*/
15357WDI_Status
15358WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015359(
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 WDI_ControlBlockType* pWDICtx,
15361 WDI_EventInfoType* pEventData
15362)
15363{
15364 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015365 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 wpt_uint16 usDataOffset = 0;
15368 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015369 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15371
15372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 -------------------------------------------------------------------------*/
15375 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015376 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015377 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15378 {
15379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015383 }
15384
15385 /*-----------------------------------------------------------------------
15386 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015387 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015390 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015391 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015392 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 {
15394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015395 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 pEventData, wdiWowlExitCb);
15397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 }
15400
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015401 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15402
15403 wpalMemoryCopy( pSendBuffer+usDataOffset,
15404 &wowlExitparams,
15405 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015407 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015409 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15410 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015411}/*WDI_ProcessWowlExitReq*/
15412
15413/**
15414 @brief Process Configure Apps Cpu Wakeup State Request function
15415 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015416
15417 @param pWDICtx: pointer to the WLAN DAL context
15418 pEventData: pointer to the event information structure
15419
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 @see
15421 @return Result of the function call
15422*/
15423WDI_Status
15424WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015425(
Jeff Johnson295189b2012-06-20 16:38:30 -070015426 WDI_ControlBlockType* pWDICtx,
15427 WDI_EventInfoType* pEventData
15428)
15429{
15430 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15431 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 wpt_uint16 usDataOffset = 0;
15434 wpt_uint16 usSendSize = 0;
15435 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15437
15438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 -------------------------------------------------------------------------*/
15441 if (( NULL == pEventData ) ||
15442 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15443 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15444 {
15445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015449 }
15450
15451 /*-----------------------------------------------------------------------
15452 Get message buffer
15453 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015454 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015455 sizeof(halCfgAppsCpuWakeupStateReqParams),
15456 &pSendBuffer, &usDataOffset, &usSendSize))||
15457 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15458 {
15459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015460 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015461 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015464 }
15465
Jeff Johnsone7245742012-09-05 17:12:55 -070015466 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15468
Jeff Johnsone7245742012-09-05 17:12:55 -070015469 wpalMemoryCopy( pSendBuffer+usDataOffset,
15470 &halCfgAppsCpuWakeupStateReqParams,
15471 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015472
15473 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015474 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015475
15476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015477 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015479 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15480 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15481 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015482}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15483
15484#ifdef WLAN_FEATURE_VOWIFI_11R
15485/**
15486 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15487 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015488
15489 @param pWDICtx: pointer to the WLAN DAL context
15490 pEventData: pointer to the event information structure
15491
Jeff Johnson295189b2012-06-20 16:38:30 -070015492 @see
15493 @return Result of the function call
15494*/
15495WDI_Status
15496WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015497(
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 WDI_ControlBlockType* pWDICtx,
15499 WDI_EventInfoType* pEventData
15500)
15501{
15502 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15503 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015507 wpt_uint16 usDataOffset = 0;
15508 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 wpt_macAddr macBSSID;
15511 tAggrAddTsReq halAggrAddTsReq;
15512 int i;
15513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15514
15515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 -------------------------------------------------------------------------*/
15518 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15519 ( NULL == pEventData->pCBfnc ))
15520 {
15521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 }
15526 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15527 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15528 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15529 /*-------------------------------------------------------------------------
15530 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015531 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015532 -------------------------------------------------------------------------*/
15533 wpalMutexAcquire(&pWDICtx->wptMutex);
15534
15535 /*------------------------------------------------------------------------
15536 Find the BSS for which the request is made and identify WDI session
15537 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15539 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015540 &macBSSID))
15541 {
15542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015543 "This station does not exist in the WDI Station Table %d",
15544 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015547 }
15548
Jeff Johnsone7245742012-09-05 17:12:55 -070015549 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15550 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15553 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15554 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015555
15556 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015557 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015559
Jeff Johnson295189b2012-06-20 16:38:30 -070015560 /*------------------------------------------------------------------------
15561 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015562 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 ------------------------------------------------------------------------*/
15564 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15565 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15567 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15568 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015569
Jeff Johnsone7245742012-09-05 17:12:55 -070015570 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015572 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015573 }
15574
15575 wpalMutexRelease(&pWDICtx->wptMutex);
15576 /*-----------------------------------------------------------------------
15577 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015578 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015579 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 sizeof(tAggrAddTsParams),
15582 &pSendBuffer, &usDataOffset, &usSendSize))||
15583 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15584 {
15585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015586 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15588 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
Jeff Johnsone7245742012-09-05 17:12:55 -070015592 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015593 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15596
15597 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15598 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015599 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015601 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015602 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015603 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15605 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15608 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015610 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15611 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15614 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015615 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015616 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15617 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015618 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15620 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015621 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015622 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15623 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15626 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015627 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015628 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015629 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015631
15632
15633 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015637 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015639 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015641 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015642 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015643 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015651 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015653 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015657 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15663 }
15664
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 wpalMemoryCopy( pSendBuffer+usDataOffset,
15666 &halAggrAddTsReq,
15667 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015668
15669 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015671
15672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015678}/*WDI_ProcessAggrAddTSpecReq*/
15679#endif /* WLAN_FEATURE_VOWIFI_11R */
15680
15681/**
15682 @brief Process Shutdown Request function (called when Main FSM
15683 allows it)
15684
15685 @param pWDICtx: pointer to the WLAN DAL context
15686 pEventData: pointer to the event information structure
15687
15688 @see
15689 @return Result of the function call
15690*/
15691WDI_Status
15692WDI_ProcessShutdownReq
15693(
15694 WDI_ControlBlockType* pWDICtx,
15695 WDI_EventInfoType* pEventData
15696 )
15697{
15698 wpt_status wptStatus;
15699
15700
15701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15702
15703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015704 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 -------------------------------------------------------------------------*/
15706 if ( NULL == pEventData )
15707 {
15708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015709 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 WDI_ASSERT(0);
15711 return WDI_STATUS_E_FAILURE;
15712 }
15713
15714 wpalMutexAcquire(&pWDICtx->wptMutex);
15715
15716
15717 gWDIInitialized = eWLAN_PAL_FALSE;
15718 /*! TO DO: stop the data services */
15719 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15720 {
15721 /*Stop the STA Table !UT- check this logic again
15722 It is safer to do it here than on the response - because a stop is imminent*/
15723 WDI_STATableStop(pWDICtx);
15724
15725 /* Stop Transport Driver, DXE */
15726 WDTS_Stop(pWDICtx);
15727 }
15728
15729 /*Clear all pending request*/
15730 WDI_ClearPendingRequests(pWDICtx);
15731 /* Close Data transport*/
15732 /* FTM mode does not open Data Path */
15733 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15734 {
15735 WDTS_Close(pWDICtx);
15736 }
15737 /*Close the STA Table !UT- check this logic again*/
15738 WDI_STATableClose(pWDICtx);
15739 /*close the PAL */
15740 wptStatus = wpalClose(pWDICtx->pPALContext);
15741 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15742 {
15743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15744 "Failed to wpal Close %d", wptStatus);
15745 WDI_ASSERT(0);
15746 }
15747
15748 /*Transition back to init state*/
15749 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15750
15751 wpalMutexRelease(&pWDICtx->wptMutex);
15752
15753 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015754 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015755
15756
Jeff Johnsone7245742012-09-05 17:12:55 -070015757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015758}/*WDI_ProcessShutdownReq*/
15759
15760/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015761 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015762========================================================================*/
15763
15764/**
15765 @brief Process Start Response function (called when a response
15766 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015767
15768 @param pWDICtx: pointer to the WLAN DAL context
15769 pEventData: pointer to the event information structure
15770
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 @see
15772 @return Result of the function call
15773*/
15774WDI_Status
15775WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015776(
Jeff Johnson295189b2012-06-20 16:38:30 -070015777 WDI_ControlBlockType* pWDICtx,
15778 WDI_EventInfoType* pEventData
15779)
15780{
15781 WDI_StartRspParamsType wdiRspParams;
15782 WDI_StartRspCb wdiStartRspCb = NULL;
15783
15784 tHalMacStartRspParams* startRspParams;
15785
15786#ifndef HAL_SELF_STA_PER_BSS
15787 WDI_AddStaParams wdiAddSTAParam = {0};
15788#endif
15789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15790
Jeff Johnsone7245742012-09-05 17:12:55 -070015791 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 -------------------------------------------------------------------------*/
15795 if (( NULL == pEventData ) ||
15796 ( NULL == pEventData->pEventData) ||
15797 ( NULL == wdiStartRspCb ))
15798 {
15799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015800 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015803 }
15804
15805 /*-------------------------------------------------------------------------
15806 Extract response and send it to UMAC
15807 -------------------------------------------------------------------------*/
15808 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15809 {
15810 // not enough data was received
15811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015812 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015813 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 }
15817
15818 /*-------------------------------------------------------------------------
15819 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015821 -------------------------------------------------------------------------*/
15822 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15823
15824 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15825 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15826 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15827 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15828 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15829 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15830 wdiRspParams.wlanReportedVersion.major =
15831 startRspParams->wcnssWlanVersion.major;
15832 wdiRspParams.wlanReportedVersion.minor =
15833 startRspParams->wcnssWlanVersion.minor;
15834 wdiRspParams.wlanReportedVersion.version =
15835 startRspParams->wcnssWlanVersion.version;
15836 wdiRspParams.wlanReportedVersion.revision =
15837 startRspParams->wcnssWlanVersion.revision;
15838 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15839 startRspParams->wcnssCrmVersionString,
15840 sizeof(wdiRspParams.wcnssSoftwareVersion));
15841 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15842 startRspParams->wcnssWlanVersionString,
15843 sizeof(wdiRspParams.wcnssHardwareVersion));
15844 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15845
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015846 /*Save the HAL Version*/
15847 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15848
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 wpalMutexAcquire(&pWDICtx->wptMutex);
15850 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15851 {
15852 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15853
15854 /*Cache the start response for further use*/
15855 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 sizeof(pWDICtx->wdiCachedStartRspParams));
15858
15859 }
15860 else
15861 {
15862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15863 "Failed to start device with status %s(%d)",
15864 WDI_getHALStatusMsgString(startRspParams->status),
15865 startRspParams->status);
15866
15867 /*Set the expected state transition to stopped - because the start has
15868 failed*/
15869 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15870
15871 wpalMutexRelease(&pWDICtx->wptMutex);
15872
15873 /*Notify UMAC*/
15874 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015875
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015877 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015878
15879 /*Although the response is an error - it was processed by our function
15880 so as far as the caller is concerned this is a succesful reponse processing*/
15881 return WDI_STATUS_SUCCESS;
15882 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015883
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 wpalMutexRelease(&pWDICtx->wptMutex);
15885
15886 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15887 {
15888 /* FTM mode does not need to execute below */
15889 /* Notify UMAC */
15890 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15891 return WDI_STATUS_SUCCESS;
15892 }
15893
15894 /* START the Data transport */
15895 WDTS_startTransport(pWDICtx);
15896
15897 /*Start the STA Table !- check this logic again*/
15898 WDI_STATableStart(pWDICtx);
15899
15900#ifndef HAL_SELF_STA_PER_BSS
15901 /* Store the Self STA Index */
15902 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15903
15904 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15905 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15906 WDI_MAC_ADDR_LEN);
15907
15908 /* At this point add the self-STA */
15909
15910 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15911 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15912 /*! TO DO: wdiAddSTAParam.dpuSig */
15913 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15914 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15915 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15916
15917 //all DPU indices are the same for self STA
15918 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15919 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015920 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15922 WDI_MAC_ADDR_LEN);
15923 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15924 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15925
15926 /* Note: Since we don't get an explicit config STA request for self STA, we
15927 add the self STA upon receiving the Start response message. But the
15928 self STA entry in the table is deleted when WDI gets an explicit delete STA
15929 request */
15930 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15931#endif
15932
15933 /*Notify UMAC*/
15934 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15935
Jeff Johnsone7245742012-09-05 17:12:55 -070015936 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015937}/*WDI_ProcessStartRsp*/
15938
15939
15940/**
15941 @brief Process Stop Response function (called when a response
15942 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015943
15944 @param pWDICtx: pointer to the WLAN DAL context
15945 pEventData: pointer to the event information structure
15946
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 @see
15948 @return Result of the function call
15949*/
15950WDI_Status
15951WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015952(
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 WDI_ControlBlockType* pWDICtx,
15954 WDI_EventInfoType* pEventData
15955)
15956{
15957 WDI_Status wdiStatus;
15958 WDI_StopRspCb wdiStopRspCb = NULL;
15959
Jeff Johnsone7245742012-09-05 17:12:55 -070015960 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15962
Jeff Johnsone7245742012-09-05 17:12:55 -070015963 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 -------------------------------------------------------------------------*/
15967 if (( NULL == pEventData ) ||
15968 ( NULL == pEventData->pEventData) ||
15969 ( NULL == wdiStopRspCb ))
15970 {
15971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015975 }
15976
15977 /*-------------------------------------------------------------------------
15978 Extract response and send it to UMAC
15979 -------------------------------------------------------------------------*/
15980 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15981 {
15982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015983 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 pEventData->uEventDataSize);
15985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 }
15988
15989 /*-------------------------------------------------------------------------
15990 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015992 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015993 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15994 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015995 sizeof(halMacStopRspMsg.stopRspParams));
15996
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015998
15999 wpalMutexAcquire(&pWDICtx->wptMutex);
16000
16001 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016002 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016003 --------------------------------------------------------------------------*/
16004 if ( WDI_STATUS_SUCCESS != wdiStatus )
16005 {
16006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16007 "Failed to stop the device with status %s (%d)",
16008 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16009 halMacStopRspMsg.stopRspParams.status);
16010
Jeff Johnsone7245742012-09-05 17:12:55 -070016011 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016012 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016013
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016017
Jeff Johnson295189b2012-06-20 16:38:30 -070016018 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16019
16020 /*Transition now as WDI may get preempted imediately after it sends
16021 up the Stop Response and it will not get to process the state transition
16022 from Main Rsp function*/
16023 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16024 wpalMutexRelease(&pWDICtx->wptMutex);
16025
16026 /*! TO DO: - STOP the Data transport */
16027
16028 /*Notify UMAC*/
16029 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16030
Jeff Johnsone7245742012-09-05 17:12:55 -070016031 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016032}/*WDI_ProcessStopRsp*/
16033
16034/**
16035 @brief Process Close Rsp function (called when a response
16036 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016037
16038 @param pWDICtx: pointer to the WLAN DAL context
16039 pEventData: pointer to the event information structure
16040
Jeff Johnson295189b2012-06-20 16:38:30 -070016041 @see
16042 @return Result of the function call
16043*/
16044WDI_Status
16045WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016046(
Jeff Johnson295189b2012-06-20 16:38:30 -070016047 WDI_ControlBlockType* pWDICtx,
16048 WDI_EventInfoType* pEventData
16049)
16050{
16051 /*There is no close response comming from HAL - function just kept for
16052 simmetry */
16053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016054 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016055}/*WDI_ProcessCloseRsp*/
16056
16057
16058/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016059 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016060============================================================================*/
16061
16062/**
16063 @brief Process Init Scan Rsp function (called when a response
16064 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016065
16066 @param pWDICtx: pointer to the WLAN DAL context
16067 pEventData: pointer to the event information structure
16068
Jeff Johnson295189b2012-06-20 16:38:30 -070016069 @see
16070 @return Result of the function call
16071*/
16072WDI_Status
16073WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016074(
Jeff Johnson295189b2012-06-20 16:38:30 -070016075 WDI_ControlBlockType* pWDICtx,
16076 WDI_EventInfoType* pEventData
16077)
16078{
16079 WDI_Status wdiStatus;
16080 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016081 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016082 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16084
16085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 -------------------------------------------------------------------------*/
16088 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16089 ( NULL == pEventData->pEventData))
16090 {
16091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016095 }
16096
16097 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16098 if( NULL == wdiInitScanRspCb)
16099 {
16100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016101 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016104 }
16105
16106 /*-------------------------------------------------------------------------
16107 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16111 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016112 sizeof(halInitScanRspMsg.initScanRspParams));
16113
Jeff Johnsone7245742012-09-05 17:12:55 -070016114 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016115
16116 if ( pWDICtx->bInBmps )
16117 {
16118 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016119 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16120 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016122 "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 -080016123 WDI_ASSERT(0);
16124 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 }
16126
16127 /*Notify UMAC*/
16128 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16129
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016131}/*WDI_ProcessInitScanRsp*/
16132
16133
16134/**
16135 @brief Process Start Scan Rsp function (called when a response
16136 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016137
16138 @param pWDICtx: pointer to the WLAN DAL context
16139 pEventData: pointer to the event information structure
16140
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 @see
16142 @return Result of the function call
16143*/
16144WDI_Status
16145WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016146(
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 WDI_ControlBlockType* pWDICtx,
16148 WDI_EventInfoType* pEventData
16149)
16150{
16151 WDI_StartScanRspParamsType wdiStartScanParams;
16152 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016153
16154 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16156
16157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 -------------------------------------------------------------------------*/
16160 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16161 ( NULL == pEventData->pEventData))
16162 {
16163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016167 }
16168
16169 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16170 if( NULL == wdiStartScanRspCb)
16171 {
16172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016173 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 }
16177
16178 /*-------------------------------------------------------------------------
16179 Extract response and send it to UMAC
16180 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16182 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016183 sizeof(halStartScanRspMsg.startScanRspParams));
16184
16185 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16186 halStartScanRspMsg.startScanRspParams.status);
16187#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 halStartScanRspMsg.startScanRspParams.startTSF,
16192 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016193#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016194
16195 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16196 {
16197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16198 "Start scan failed with status %s (%d)",
16199 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16200 halStartScanRspMsg.startScanRspParams.status);
16201 /* send the status to UMAC, don't return from here*/
16202 }
16203
16204 /*Notify UMAC*/
16205 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16206
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016208
16209}/*WDI_ProcessStartScanRsp*/
16210
16211
16212/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016214 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016215
16216 @param pWDICtx: pointer to the WLAN DAL context
16217 pEventData: pointer to the event information structure
16218
Jeff Johnson295189b2012-06-20 16:38:30 -070016219 @see
16220 @return Result of the function call
16221*/
16222WDI_Status
16223WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016224(
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 WDI_ControlBlockType* pWDICtx,
16226 WDI_EventInfoType* pEventData
16227)
16228{
16229 WDI_Status wdiStatus;
16230 tHalEndScanRspMsg halEndScanRspMsg;
16231 WDI_EndScanRspCb wdiEndScanRspCb;
16232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16233
16234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 -------------------------------------------------------------------------*/
16237 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16238 ( NULL == pEventData->pEventData))
16239 {
16240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 }
16245
16246 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16247
16248 /*-------------------------------------------------------------------------
16249 Extract response and send it to UMAC
16250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016251 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16252 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016253 sizeof(halEndScanRspMsg.endScanRspParams));
16254
Jeff Johnsone7245742012-09-05 17:12:55 -070016255 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016256
16257 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16258 {
16259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16260 "End Scan failed with status %s (%d )",
16261 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16262 halEndScanRspMsg.endScanRspParams.status);
16263 /* send the status to UMAC, don't return from here*/
16264 }
16265
16266 /*Notify UMAC*/
16267 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16268
Jeff Johnsone7245742012-09-05 17:12:55 -070016269 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016270}/*WDI_ProcessEndScanRsp*/
16271
16272
16273/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016274 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016276
16277 @param pWDICtx: pointer to the WLAN DAL context
16278 pEventData: pointer to the event information structure
16279
Jeff Johnson295189b2012-06-20 16:38:30 -070016280 @see
16281 @return Result of the function call
16282*/
16283WDI_Status
16284WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016285(
Jeff Johnson295189b2012-06-20 16:38:30 -070016286 WDI_ControlBlockType* pWDICtx,
16287 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016288)
Jeff Johnson295189b2012-06-20 16:38:30 -070016289{
16290 WDI_Status wdiStatus;
16291 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016292
16293 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16295
16296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016298 -------------------------------------------------------------------------*/
16299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16300 ( NULL == pEventData->pEventData))
16301 {
16302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 }
16307
16308 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16309
16310 /*-------------------------------------------------------------------------
16311 Extract response and send it to UMAC
16312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16314 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16316
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016318
16319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 halFinishScanRspMsg.finishScanRspParams.status);
16322
16323 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16324 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16325 {
16326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16327 "Finish Scan failed with status %s (%d)",
16328 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16329 halFinishScanRspMsg.finishScanRspParams.status);
16330 /* send the status to UMAC, don't return from here*/
16331 }
16332
16333 /*Notify UMAC*/
16334 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16335
Jeff Johnsone7245742012-09-05 17:12:55 -070016336 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016337}/*WDI_ProcessFinishScanRsp*/
16338
16339/**
16340 @brief Process Join Response function (called when a response
16341 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016342
16343 @param pWDICtx: pointer to the WLAN DAL context
16344 pEventData: pointer to the event information structure
16345
Jeff Johnson295189b2012-06-20 16:38:30 -070016346 @see
16347 @return Result of the function call
16348*/
16349WDI_Status
16350WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016351(
Jeff Johnson295189b2012-06-20 16:38:30 -070016352 WDI_ControlBlockType* pWDICtx,
16353 WDI_EventInfoType* pEventData
16354)
16355{
16356 WDI_Status wdiStatus;
16357 WDI_JoinRspCb wdiJoinRspCb;
16358 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016359
16360 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16362
16363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016365 -------------------------------------------------------------------------*/
16366 if (( NULL == pWDICtx ) ||
16367 ( NULL == pWDICtx->pfncRspCB ) ||
16368 ( NULL == pEventData ) ||
16369 ( NULL == pEventData->pEventData))
16370 {
16371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016375 }
16376
16377 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16378
16379 /*-------------------------------------------------------------------------
16380 Extract response and send it to UMAC
16381 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016382 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16383 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016384 sizeof(halJoinRspMsg.joinRspParams));
16385
Jeff Johnsone7245742012-09-05 17:12:55 -070016386 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016387
16388 wpalMutexAcquire(&pWDICtx->wptMutex);
16389
16390 /*-----------------------------------------------------------------------
16391 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016392 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016393 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016394 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016395 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16396 {
16397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016398 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16399 "association no longer in progress %d - mysterious HAL response",
16400 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016401
Jeff Johnsone7245742012-09-05 17:12:55 -070016402 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016404 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016405 }
16406
16407 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16408
16409 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016410 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016411 -----------------------------------------------------------------------*/
16412 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16413 {
16414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16415 "Join only allowed in Joining state - failure state is %d "
16416 "strange HAL response", pBSSSes->wdiAssocState);
16417
Jeff Johnsone7245742012-09-05 17:12:55 -070016418 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16419
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016422 }
16423
16424
16425 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016426 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 -----------------------------------------------------------------------*/
16428 if ( WDI_STATUS_SUCCESS != wdiStatus )
16429 {
16430 /*Association was failed by HAL - remove session*/
16431 WDI_DeleteSession(pWDICtx, pBSSSes);
16432
16433 /*Association no longer in progress */
16434 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16435
16436 /*Association no longer in progress - prepare pending assoc for processing*/
16437 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016438
Jeff Johnson295189b2012-06-20 16:38:30 -070016439 }
16440 else
16441 {
16442 /*Transition to state Joining - this may be redundant as we are supposed
16443 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016444 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016445 }
16446
16447 wpalMutexRelease(&pWDICtx->wptMutex);
16448
16449 /*Notify UMAC*/
16450 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16451
Jeff Johnsone7245742012-09-05 17:12:55 -070016452 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016453}/*WDI_ProcessJoinRsp*/
16454
16455
16456/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016457 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016458 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016459
16460 @param pWDICtx: pointer to the WLAN DAL context
16461 pEventData: pointer to the event information structure
16462
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 @see
16464 @return Result of the function call
16465*/
16466WDI_Status
16467WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016468(
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 WDI_ControlBlockType* pWDICtx,
16470 WDI_EventInfoType* pEventData
16471)
16472{
16473 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16474 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016475 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016476 WDI_BSSSessionType* pBSSSes = NULL;
16477
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016479 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16480 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016481
Jeff Johnson295189b2012-06-20 16:38:30 -070016482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16483
16484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 -------------------------------------------------------------------------*/
16487 if (( NULL == pEventData ) ||
16488 ( NULL == pEventData->pEventData))
16489 {
16490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016494 }
16495
16496 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16497
16498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016499 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016501 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16502 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016503 sizeof(halConfigBssRspMsg.configBssRspParams));
16504
16505 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16506 halConfigBssRspMsg.configBssRspParams.status);
16507 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16508 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016509 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16511 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016512
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016514
16515 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016517
16518 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016520
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016522
Jeff Johnson295189b2012-06-20 16:38:30 -070016523 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16526 #endif
16527 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16528 halConfigBssRspMsg.configBssRspParams.staMac,
16529 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016530
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 wpalMutexAcquire(&pWDICtx->wptMutex);
16532 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016533 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016535 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16536 wdiConfigBSSParams.macBSSID,
16537 &pBSSSes);
16538
Jeff Johnson295189b2012-06-20 16:38:30 -070016539 /*-----------------------------------------------------------------------
16540 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 -----------------------------------------------------------------------*/
16543 if ( NULL == pBSSSes )
16544 {
16545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16546 "Association sequence for this BSS does not yet exist "
16547 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016548
16549 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16550
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016554
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 /*Save data for this BSS*/
16556 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16557 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016558 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016562 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016567 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16568 pBSSSes->bcastStaIdx =
16569 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016570
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016572
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 /*-------------------------------------------------------------------------
16574 Add Peer STA
16575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016576 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16578 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016579
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 wdiAddSTAParam.ucHTCapable =
16584 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16585 wdiAddSTAParam.ucStaType =
16586 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16587
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16590 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016592
16593 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16594 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16595 WDI_MAC_ADDR_LEN);
16596
Jeff Johnson295189b2012-06-20 16:38:30 -070016597 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016598 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016599 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016600 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016601 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016602 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016603 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016604 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016606 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016608 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016610
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16612 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016613
Jeff Johnson295189b2012-06-20 16:38:30 -070016614 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16615 /*-------------------------------------------------------------------------
16616 Add Broadcast STA only in AP mode
16617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016618 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016619 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016620 {
16621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16622 "Add BCAST STA to table for index: %d",
16623 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016624
16625 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016626 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016627
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16629 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16630 }
16631 wpalMutexRelease(&pWDICtx->wptMutex);
16632 }
16633 else
16634 {
16635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16636 "Config BSS RSP failed with status : %s(%d)",
16637 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016638 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 halConfigBssRspMsg.configBssRspParams.status);
16640
Jeff Johnsone7245742012-09-05 17:12:55 -070016641
Jeff Johnson295189b2012-06-20 16:38:30 -070016642 /*Association was failed by HAL - remove session*/
16643 WDI_DeleteSession(pWDICtx, pBSSSes);
16644
16645 /*Association no longer in progress */
16646 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16647
16648 /*Association no longer in progress - prepare pending assoc for processing*/
16649 WDI_DequeueAssocRequest(pWDICtx);
16650
16651 }
16652
16653 /*Notify UMAC*/
16654 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16655
Jeff Johnsone7245742012-09-05 17:12:55 -070016656 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016657}/*WDI_ProcessConfigBSSRsp*/
16658
16659
16660/**
16661 @brief Process Del BSS Response function (called when a response
16662 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016663
16664 @param pWDICtx: pointer to the WLAN DAL context
16665 pEventData: pointer to the event information structure
16666
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 @see
16668 @return Result of the function call
16669*/
16670WDI_Status
16671WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016672(
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 WDI_ControlBlockType* pWDICtx,
16674 WDI_EventInfoType* pEventData
16675)
16676{
16677 WDI_DelBSSRspParamsType wdiDelBSSParams;
16678 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016679 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 WDI_BSSSessionType* pBSSSes = NULL;
16681
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16684
16685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 -------------------------------------------------------------------------*/
16688 if (( NULL == pEventData ) ||
16689 ( NULL == pEventData->pEventData))
16690 {
16691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 }
16696
16697 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16698
16699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016702 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16703 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 sizeof(halDelBssRspMsg.deleteBssRspParams));
16705
16706
16707 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016709
16710 wpalMutexAcquire(&pWDICtx->wptMutex);
16711
16712 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016713 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016714 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16716 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16717 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016718
16719 /*-----------------------------------------------------------------------
16720 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016721 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 -----------------------------------------------------------------------*/
16723 if ( NULL == pBSSSes )
16724 {
16725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16726 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016727 "association no longer in progress - mysterious HAL response");
16728
16729 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16730
16731 wpalMutexRelease(&pWDICtx->wptMutex);
16732 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016733 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016734
16735 /*Extract BSSID for the response to UMAC*/
16736 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16737 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16738
16739 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16740
16741 /*-----------------------------------------------------------------------
16742 The current session will be deleted
16743 -----------------------------------------------------------------------*/
16744 WDI_DeleteSession(pWDICtx, pBSSSes);
16745
16746
16747 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016748 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16749 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016751 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016752 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016753
16754 /* Delete the STA's in this BSS */
16755 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16756
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 wpalMutexRelease(&pWDICtx->wptMutex);
16758
16759 /*Notify UMAC*/
16760 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16761
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016763}/*WDI_ProcessDelBSSRsp*/
16764
16765/**
16766 @brief Process Post Assoc Rsp function (called when a response
16767 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016768
16769 @param pWDICtx: pointer to the WLAN DAL context
16770 pEventData: pointer to the event information structure
16771
Jeff Johnson295189b2012-06-20 16:38:30 -070016772 @see
16773 @return Result of the function call
16774*/
16775WDI_Status
16776WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016777(
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 WDI_ControlBlockType* pWDICtx,
16779 WDI_EventInfoType* pEventData
16780)
16781{
16782 WDI_PostAssocRspParamsType wdiPostAssocParams;
16783 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016784 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016786 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16788
16789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 -------------------------------------------------------------------------*/
16792 if (( NULL == pEventData ) ||
16793 ( NULL == pEventData->pEventData))
16794 {
16795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016799 }
16800
16801 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16802
16803 /*-------------------------------------------------------------------------
16804 Extract response and send it to UMAC
16805 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16807 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 sizeof(halPostAssocRspMsg.postAssocRspParams));
16809
16810 /*Extract the Post Assoc STA Params */
16811
Jeff Johnsone7245742012-09-05 17:12:55 -070016812 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016813 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016815 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016816 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16818
Jeff Johnsone7245742012-09-05 17:12:55 -070016819 wdiPostAssocParams.wdiStatus =
16820 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016821
16822 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16823 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016824 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16825 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016826 WDI_MAC_ADDR_LEN);
16827
16828 /* Extract Post Assoc BSS Params */
16829
Jeff Johnsone7245742012-09-05 17:12:55 -070016830 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16831 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16832 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016833
16834 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16835 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016837 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16838 .macSTA, WDI_MAC_ADDR_LEN);
16839
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16842
Jeff Johnsone7245742012-09-05 17:12:55 -070016843 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16845
16846 wdiPostAssocParams.bssParams.ucBSSIdx =
16847 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16848
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16851
16852 wpalMutexAcquire(&pWDICtx->wptMutex);
16853
16854 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016855 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016856 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016859 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016860
16861 /*-----------------------------------------------------------------------
16862 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 -----------------------------------------------------------------------*/
16865 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16868 {
16869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16870 "Association sequence for this BSS does not yet exist or "
16871 "association no longer in progress - mysterious HAL response");
16872
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16874
Jeff Johnson295189b2012-06-20 16:38:30 -070016875 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016876 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016877 }
16878
16879 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016880 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016881 -----------------------------------------------------------------------*/
16882 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16883 {
16884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16885 "Post Assoc not allowed before JOIN - failing request "
16886 "strange HAL response");
16887
Jeff Johnsone7245742012-09-05 17:12:55 -070016888 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16889
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016891 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 }
16893
16894 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016895 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016896 -----------------------------------------------------------------------*/
16897 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16898 {
16899 /*Association was failed by HAL - remove session*/
16900 WDI_DeleteSession(pWDICtx, pBSSSes);
16901 }
16902 else
16903 {
16904 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016905 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016906
16907 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016908 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016909 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016910 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016912 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016914 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016915 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16916
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16919 }
16920
16921 /*Association no longer in progress */
16922 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16923
16924 /*Association no longer in progress - prepare pending assoc for processing*/
16925 WDI_DequeueAssocRequest(pWDICtx);
16926
16927 wpalMutexRelease(&pWDICtx->wptMutex);
16928
16929 /*Notify UMAC*/
16930 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16931
Jeff Johnsone7245742012-09-05 17:12:55 -070016932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016933}/*WDI_ProcessPostAssocRsp*/
16934
16935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016936 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016938
16939 @param pWDICtx: pointer to the WLAN DAL context
16940 pEventData: pointer to the event information structure
16941
Jeff Johnson295189b2012-06-20 16:38:30 -070016942 @see
16943 @return Result of the function call
16944*/
16945WDI_Status
16946WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016947(
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 WDI_ControlBlockType* pWDICtx,
16949 WDI_EventInfoType* pEventData
16950)
16951{
16952 WDI_DelSTARspParamsType wdiDelSTARsp;
16953 WDI_DelSTARspCb wdiDelSTARspCb;
16954 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16957
16958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016960 -------------------------------------------------------------------------*/
16961 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16962 ( NULL == pEventData->pEventData))
16963 {
16964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 }
16969
16970 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16971
16972 /*-------------------------------------------------------------------------
16973 Extract response and send it to UMAC
16974 -------------------------------------------------------------------------*/
16975 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016976 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 sizeof(halDelStaRspMsg.delStaRspParams));
16978
16979 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016980 wdiDelSTARsp.wdiStatus =
16981 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016982
16983 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16984
16985 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16986 if(staType == WDI_STA_ENTRY_SELF)
16987 {
16988 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16989
16990 /* At this point add the self-STA */
16991
16992 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16993 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16994 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16995
16996#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16997#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16998
16999 //all DPU indices are the same for self STA
17000 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17001 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17002 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17003 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17004 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17005 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017006
17007 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017008 }
17009 else
17010 {
17011 //Delete the station in the table
17012 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17013 }
17014
17015 /*Notify UMAC*/
17016 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17017
Jeff Johnsone7245742012-09-05 17:12:55 -070017018 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017019}/*WDI_ProcessDelSTARsp*/
17020
17021
17022/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017024==========================================================================*/
17025
17026/**
17027 @brief Process Set BSS Key Rsp function (called when a response
17028 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017029
17030 @param pWDICtx: pointer to the WLAN DAL context
17031 pEventData: pointer to the event information structure
17032
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 @see
17034 @return Result of the function call
17035*/
17036WDI_Status
17037WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017038(
Jeff Johnson295189b2012-06-20 16:38:30 -070017039 WDI_ControlBlockType* pWDICtx,
17040 WDI_EventInfoType* pEventData
17041)
17042{
17043 WDI_Status wdiStatus;
17044 eHalStatus halStatus;
17045 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17047
17048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017049 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017050 -------------------------------------------------------------------------*/
17051 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17052 ( NULL == pEventData->pEventData))
17053 {
17054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 }
17059
17060 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17061
17062 /*-------------------------------------------------------------------------
17063 Extract response and send it to UMAC
17064 -------------------------------------------------------------------------*/
17065 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017066 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017067
17068 if ( eHAL_STATUS_SUCCESS != halStatus )
17069 {
17070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17071 "Set BSS Key failed with status %s (%d)",
17072 WDI_getHALStatusMsgString(halStatus),
17073 halStatus);
17074 /* send the status to UMAC, don't return from here*/
17075 }
17076
17077 /*Notify UMAC*/
17078 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17079
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017081}/*WDI_ProcessSetBssKeyRsp*/
17082
17083/**
17084 @brief Process Remove BSS Key Rsp function (called when a response
17085 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017086
17087 @param pWDICtx: pointer to the WLAN DAL context
17088 pEventData: pointer to the event information structure
17089
Jeff Johnson295189b2012-06-20 16:38:30 -070017090 @see
17091 @return Result of the function call
17092*/
17093WDI_Status
17094WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017095(
Jeff Johnson295189b2012-06-20 16:38:30 -070017096 WDI_ControlBlockType* pWDICtx,
17097 WDI_EventInfoType* pEventData
17098)
17099{
17100 WDI_Status wdiStatus;
17101 eHalStatus halStatus;
17102 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17104
17105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017107 -------------------------------------------------------------------------*/
17108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17109 ( NULL == pEventData->pEventData))
17110 {
17111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017115 }
17116
17117 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17118
17119 /*-------------------------------------------------------------------------
17120 Extract response and send it to UMAC
17121 -------------------------------------------------------------------------*/
17122 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017124
17125 if ( eHAL_STATUS_SUCCESS != halStatus )
17126 {
17127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17128 "Remove BSS Key failed with status %s (%d )",
17129 WDI_getHALStatusMsgString(halStatus),
17130 halStatus);
17131 /* send the status to UMAC, don't return from here*/
17132 }
17133
17134 /*Notify UMAC*/
17135 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17136
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017138}/*WDI_ProcessSetBssKeyRsp*/
17139
17140
17141/**
17142 @brief Process Set STA Key Rsp function (called when a response
17143 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017144
17145 @param pWDICtx: pointer to the WLAN DAL context
17146 pEventData: pointer to the event information structure
17147
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 @see
17149 @return Result of the function call
17150*/
17151WDI_Status
17152WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017153(
Jeff Johnson295189b2012-06-20 16:38:30 -070017154 WDI_ControlBlockType* pWDICtx,
17155 WDI_EventInfoType* pEventData
17156)
17157{
17158 WDI_Status wdiStatus;
17159 eHalStatus halStatus;
17160 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17162
17163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017165 -------------------------------------------------------------------------*/
17166 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17167 ( NULL == pEventData->pEventData))
17168 {
17169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 }
17174
17175 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17176
17177 /*-------------------------------------------------------------------------
17178 Extract response and send it to UMAC
17179 -------------------------------------------------------------------------*/
17180 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017182
17183 if ( eHAL_STATUS_SUCCESS != halStatus )
17184 {
17185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17186 "Set STA Key failed with status %s (%d)",
17187 WDI_getHALStatusMsgString(halStatus),
17188 halStatus);
17189 /* send the status to UMAC, don't return from here*/
17190 }
17191
17192 /*Notify UMAC*/
17193 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17194
Jeff Johnsone7245742012-09-05 17:12:55 -070017195 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017196}/*WDI_ProcessSetSTAKeyRsp*/
17197
17198/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017199 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017200 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017201
17202 @param pWDICtx: pointer to the WLAN DAL context
17203 pEventData: pointer to the event information structure
17204
Jeff Johnson295189b2012-06-20 16:38:30 -070017205 @see
17206 @return Result of the function call
17207*/
17208WDI_Status
17209WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017210(
Jeff Johnson295189b2012-06-20 16:38:30 -070017211 WDI_ControlBlockType* pWDICtx,
17212 WDI_EventInfoType* pEventData
17213)
17214{
17215 WDI_Status wdiStatus;
17216 eHalStatus halStatus;
17217 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17219
17220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017222 -------------------------------------------------------------------------*/
17223 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17224 ( NULL == pEventData->pEventData))
17225 {
17226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 }
17231
17232 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17233
17234 /*-------------------------------------------------------------------------
17235 Extract response and send it to UMAC
17236 -------------------------------------------------------------------------*/
17237 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017238 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017239
17240 if ( eHAL_STATUS_SUCCESS != halStatus )
17241 {
17242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17243 "Remove STA Key failed with status %s (%d)",
17244 WDI_getHALStatusMsgString(halStatus),
17245 halStatus);
17246 /* send the status to UMAC, don't return from here*/
17247 }
17248
17249 /*Notify UMAC*/
17250 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17251
Jeff Johnsone7245742012-09-05 17:12:55 -070017252 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017253}/*WDI_ProcessRemoveStaKeyRsp*/
17254
17255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017258
17259 @param pWDICtx: pointer to the WLAN DAL context
17260 pEventData: pointer to the event information structure
17261
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 @see
17263 @return Result of the function call
17264*/
17265WDI_Status
17266WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017267(
Jeff Johnson295189b2012-06-20 16:38:30 -070017268 WDI_ControlBlockType* pWDICtx,
17269 WDI_EventInfoType* pEventData
17270)
17271{
17272 WDI_Status wdiStatus;
17273 eHalStatus halStatus;
17274 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17276
17277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 -------------------------------------------------------------------------*/
17280 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17281 ( NULL == pEventData->pEventData))
17282 {
17283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017287 }
17288
17289 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17290
17291 /*-------------------------------------------------------------------------
17292 Extract response and send it to UMAC
17293 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017294 wpalMemoryCopy( &halStatus,
17295 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017296 sizeof(halStatus));
17297
Jeff Johnsone7245742012-09-05 17:12:55 -070017298 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017299
17300 if ( eHAL_STATUS_SUCCESS != halStatus )
17301 {
17302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17303 "Set STA Key failed with status %s (%d)",
17304 WDI_getHALStatusMsgString(halStatus),
17305 halStatus);
17306 /* send the status to UMAC, don't return from here*/
17307 }
17308
17309 /*Notify UMAC*/
17310 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17311
Jeff Johnsone7245742012-09-05 17:12:55 -070017312 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017313}/*WDI_ProcessSetSTABcastKeyRsp*/
17314
17315/**
17316 @brief Process Remove STA Bcast Key Rsp function (called when a
17317 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017318
17319 @param pWDICtx: pointer to the WLAN DAL context
17320 pEventData: pointer to the event information structure
17321
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 @see
17323 @return Result of the function call
17324*/
17325WDI_Status
17326WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017327(
Jeff Johnson295189b2012-06-20 16:38:30 -070017328 WDI_ControlBlockType* pWDICtx,
17329 WDI_EventInfoType* pEventData
17330)
17331{
17332 WDI_Status wdiStatus;
17333 eHalStatus halStatus;
17334 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17336
17337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017338 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017339 -------------------------------------------------------------------------*/
17340 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17341 ( NULL == pEventData->pEventData))
17342 {
17343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017344 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017347 }
17348
17349 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17350
17351 /*-------------------------------------------------------------------------
17352 Extract response and send it to UMAC
17353 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017354 wpalMemoryCopy( &halStatus,
17355 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 sizeof(halStatus));
17357
Jeff Johnsone7245742012-09-05 17:12:55 -070017358 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017359
17360 if ( eHAL_STATUS_SUCCESS != halStatus )
17361 {
17362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17363 "Remove STA Key failed with status %s (%d)",
17364 WDI_getHALStatusMsgString(halStatus),
17365 halStatus);
17366 /* send the status to UMAC, don't return from here*/
17367 }
17368
17369 /*Notify UMAC*/
17370 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17371
Jeff Johnsone7245742012-09-05 17:12:55 -070017372 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017373}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17374
17375
17376/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017378==========================================================================*/
17379
17380/**
17381 @brief Process Add TSpec Rsp function (called when a response
17382 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017383
17384 @param pWDICtx: pointer to the WLAN DAL context
17385 pEventData: pointer to the event information structure
17386
Jeff Johnson295189b2012-06-20 16:38:30 -070017387 @see
17388 @return Result of the function call
17389*/
17390WDI_Status
17391WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017392(
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 WDI_ControlBlockType* pWDICtx,
17394 WDI_EventInfoType* pEventData
17395)
17396{
17397 WDI_Status wdiStatus;
17398 eHalStatus halStatus;
17399 WDI_AddTsRspCb wdiAddTsRspCb;
17400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17401
17402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 -------------------------------------------------------------------------*/
17405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17406 ( NULL == pEventData->pEventData))
17407 {
17408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 }
17413
17414 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17415
17416 /*-------------------------------------------------------------------------
17417 Extract response and send it to UMAC
17418 -------------------------------------------------------------------------*/
17419 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017420 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017421
17422 /*Notify UMAC*/
17423 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17424
Jeff Johnsone7245742012-09-05 17:12:55 -070017425 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017426}/*WDI_ProcessAddTSpecRsp*/
17427
17428
Sunil Duttbd736ed2014-05-26 21:19:41 +053017429
17430#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17431
17432WDI_Status
17433WDI_ProcessLLStatsSetRsp
17434(
17435 WDI_ControlBlockType* pWDICtx,
17436 WDI_EventInfoType* pEventData
17437)
17438{
17439 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17440
17441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17442 "%s: Enter ", __func__);
17443 /*-------------------------------------------------------------------------
17444 Sanity check
17445 -------------------------------------------------------------------------*/
17446 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17447 ( NULL == pEventData->pEventData))
17448 {
17449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17450 "%s: Invalid parameters", __func__);
17451 WDI_ASSERT(0);
17452 return WDI_STATUS_E_FAILURE;
17453 }
17454
17455 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17456
17457 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17458
17459 return WDI_STATUS_SUCCESS;
17460}
17461
17462WDI_Status
17463WDI_ProcessLLStatsGetRsp
17464(
17465 WDI_ControlBlockType* pWDICtx,
17466 WDI_EventInfoType* pEventData
17467)
17468{
17469 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17470
17471 /*-------------------------------------------------------------------------
17472 Sanity check
17473 -------------------------------------------------------------------------*/
17474 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17475 ( NULL == pEventData->pEventData))
17476 {
17477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17478 "%s: Invalid parameters", __func__);
17479 WDI_ASSERT(0);
17480 return WDI_STATUS_E_FAILURE;
17481 }
17482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17483 "%s: Enter ", __func__);
17484
17485 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17486
17487 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17488
17489 return WDI_STATUS_SUCCESS;
17490}
17491
17492WDI_Status
17493WDI_ProcessLLStatsClearRsp
17494(
17495 WDI_ControlBlockType* pWDICtx,
17496 WDI_EventInfoType* pEventData
17497)
17498{
17499 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17500
17501 /*-------------------------------------------------------------------------
17502 Sanity check
17503 -------------------------------------------------------------------------*/
17504 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17505 ( NULL == pEventData->pEventData))
17506 {
17507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17508 "%s: Invalid parameters", __func__);
17509 WDI_ASSERT(0);
17510 return WDI_STATUS_E_FAILURE;
17511 }
17512
17513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17514 "%s: CLEAR RESPONSE CALL BACK", __func__);
17515 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17516
17517 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17518
17519 return WDI_STATUS_SUCCESS;
17520}
17521#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17522
Jeff Johnson295189b2012-06-20 16:38:30 -070017523/**
17524 @brief Process Del TSpec Rsp function (called when a response
17525 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017526
17527 @param pWDICtx: pointer to the WLAN DAL context
17528 pEventData: pointer to the event information structure
17529
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 @see
17531 @return Result of the function call
17532*/
17533WDI_Status
17534WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017535(
Jeff Johnson295189b2012-06-20 16:38:30 -070017536 WDI_ControlBlockType* pWDICtx,
17537 WDI_EventInfoType* pEventData
17538)
17539{
17540 WDI_Status wdiStatus;
17541 eHalStatus halStatus;
17542 WDI_DelTsRspCb wdiDelTsRspCb;
17543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17544
17545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017546 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017547 -------------------------------------------------------------------------*/
17548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17549 ( NULL == pEventData->pEventData))
17550 {
17551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 }
17556
17557 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17558
17559 /*-------------------------------------------------------------------------
17560 Extract response and send it to UMAC
17561 -------------------------------------------------------------------------*/
17562 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017563 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017564
17565 /*Notify UMAC*/
17566 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17567
Jeff Johnsone7245742012-09-05 17:12:55 -070017568 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017569}/*WDI_ProcessDelTSpecRsp*/
17570
17571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017572 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017573 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017574
17575 @param pWDICtx: pointer to the WLAN DAL context
17576 pEventData: pointer to the event information structure
17577
Jeff Johnson295189b2012-06-20 16:38:30 -070017578 @see
17579 @return Result of the function call
17580*/
17581WDI_Status
17582WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017583(
Jeff Johnson295189b2012-06-20 16:38:30 -070017584 WDI_ControlBlockType* pWDICtx,
17585 WDI_EventInfoType* pEventData
17586)
17587{
17588 WDI_Status wdiStatus;
17589 eHalStatus halStatus;
17590 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17592
17593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017594 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017595 -------------------------------------------------------------------------*/
17596 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17597 ( NULL == pEventData->pEventData))
17598 {
17599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017603 }
17604
17605 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17606
17607 /*-------------------------------------------------------------------------
17608 Extract response and send it to UMAC
17609 -------------------------------------------------------------------------*/
17610 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017611 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017612
17613 /*Notify UMAC*/
17614 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17615
Jeff Johnsone7245742012-09-05 17:12:55 -070017616 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017617}/*WDI_ProcessUpdateEDCAParamsRsp*/
17618
17619
17620/**
17621 @brief Process Add BA Rsp function (called when a response
17622 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017623
17624 @param pWDICtx: pointer to the WLAN DAL context
17625 pEventData: pointer to the event information structure
17626
Jeff Johnson295189b2012-06-20 16:38:30 -070017627 @see
17628 @return Result of the function call
17629*/
17630WDI_Status
17631WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017632(
Jeff Johnson295189b2012-06-20 16:38:30 -070017633 WDI_ControlBlockType* pWDICtx,
17634 WDI_EventInfoType* pEventData
17635)
17636{
17637 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17638
17639 tAddBASessionRspParams halBASessionRsp;
17640 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17641
Jeff Johnsone7245742012-09-05 17:12:55 -070017642
Jeff Johnson295189b2012-06-20 16:38:30 -070017643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17644
17645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 -------------------------------------------------------------------------*/
17648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17649 ( NULL == pEventData->pEventData))
17650 {
17651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017655 }
17656
17657 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17658
17659 /*-------------------------------------------------------------------------
17660 Extract response and send it to UMAC
17661 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017662 wpalMemoryCopy( &halBASessionRsp,
17663 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017664 sizeof(halBASessionRsp));
17665
17666 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17667
Jeff Johnson43971f52012-07-17 12:26:56 -070017668 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017669 {
17670 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17671 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17672 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17673 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17674 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17675 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17676 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17677 }
17678
17679 /*Notify UMAC*/
17680 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17681
Jeff Johnsone7245742012-09-05 17:12:55 -070017682 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017683}/*WDI_ProcessAddSessionBARsp*/
17684
17685
17686/**
17687 @brief Process Del BA Rsp function (called when a response
17688 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017689
17690 @param pWDICtx: pointer to the WLAN DAL context
17691 pEventData: pointer to the event information structure
17692
Jeff Johnson295189b2012-06-20 16:38:30 -070017693 @see
17694 @return Result of the function call
17695*/
17696WDI_Status
17697WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017698(
Jeff Johnson295189b2012-06-20 16:38:30 -070017699 WDI_ControlBlockType* pWDICtx,
17700 WDI_EventInfoType* pEventData
17701)
17702{
17703 WDI_Status wdiStatus;
17704 eHalStatus halStatus;
17705 WDI_DelBARspCb wdiDelBARspCb;
17706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17707
17708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017709 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017710 -------------------------------------------------------------------------*/
17711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17712 ( NULL == pEventData->pEventData))
17713 {
17714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017718 }
17719
17720 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17721
17722 /*-------------------------------------------------------------------------
17723 Extract response and send it to UMAC
17724 -------------------------------------------------------------------------*/
17725 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017726 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017727
17728 if ( eHAL_STATUS_SUCCESS == halStatus )
17729 {
17730 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17731 }
17732
17733 /*Notify UMAC*/
17734 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17735
Jeff Johnsone7245742012-09-05 17:12:55 -070017736 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017737}/*WDI_ProcessDelBARsp*/
17738
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017739#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017740/**
17741 @brief Process TSM Stats Rsp function (called when a response
17742 is being received over the bus from HAL)
17743
17744 @param pWDICtx: pointer to the WLAN DAL context
17745 pEventData: pointer to the event information structure
17746
17747 @see
17748 @return Result of the function call
17749*/
17750WDI_Status
17751WDI_ProcessTsmStatsRsp
17752(
17753 WDI_ControlBlockType* pWDICtx,
17754 WDI_EventInfoType* pEventData
17755)
17756{
17757 WDI_TsmRspCb wdiTsmStatsRspCb;
17758 tTsmStatsRspMsg halTsmStatsRspMsg;
17759 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17761
17762 /*-------------------------------------------------------------------------
17763 Sanity check
17764 -------------------------------------------------------------------------*/
17765 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17766 ( NULL == pEventData->pEventData))
17767 {
17768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017769 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017770 WDI_ASSERT(0);
17771 return WDI_STATUS_E_FAILURE;
17772 }
17773
17774 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17775
17776 /*-------------------------------------------------------------------------
17777 Unpack HAL Response Message - the header was already extracted by the
17778 main Response Handling procedure
17779 -------------------------------------------------------------------------*/
17780 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17781 pEventData->pEventData,
17782 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17783
17784 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17785 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17786 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17787 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17788 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17789 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17790 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17791 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17792 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17793 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17794 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17795 halTsmStatsRspMsg.tsmStatsRspParams.status);
17796
17797 /*Notify UMAC*/
17798 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17799
17800 return WDI_STATUS_SUCCESS;
17801}/*WDI_ProcessTsmStatsRsp*/
17802
17803#endif
17804
17805
17806
17807/**
17808 @brief Process Flush AC Rsp function (called when a response
17809 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017810
17811 @param pWDICtx: pointer to the WLAN DAL context
17812 pEventData: pointer to the event information structure
17813
Jeff Johnson295189b2012-06-20 16:38:30 -070017814 @see
17815 @return Result of the function call
17816*/
17817WDI_Status
17818WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017819(
Jeff Johnson295189b2012-06-20 16:38:30 -070017820 WDI_ControlBlockType* pWDICtx,
17821 WDI_EventInfoType* pEventData
17822)
17823{
17824 WDI_Status wdiStatus;
17825 eHalStatus halStatus;
17826 WDI_FlushAcRspCb wdiFlushAcRspCb;
17827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17828
17829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 -------------------------------------------------------------------------*/
17832 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17833 ( NULL == pEventData->pEventData))
17834 {
17835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017839 }
17840
17841 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17842
17843 /*-------------------------------------------------------------------------
17844 Extract response and send it to UMAC
17845 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017846 wpalMemoryCopy( &halStatus,
17847 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017848 sizeof(halStatus));
17849
Jeff Johnsone7245742012-09-05 17:12:55 -070017850 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017851
17852 /*Notify UMAC*/
17853 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17854
Jeff Johnsone7245742012-09-05 17:12:55 -070017855 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017856}/*WDI_ProcessFlushAcRsp*/
17857
17858/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017859 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017861
17862 @param pWDICtx: pointer to the WLAN DAL context
17863 pEventData: pointer to the event information structure
17864
Jeff Johnson295189b2012-06-20 16:38:30 -070017865 @see
17866 @return Result of the function call
17867*/
17868WDI_Status
17869WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017870(
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 WDI_ControlBlockType* pWDICtx,
17872 WDI_EventInfoType* pEventData
17873)
17874{
17875 WDI_Status wdiStatus;
17876 eHalStatus halStatus;
17877 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17879
17880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017881 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017882 -------------------------------------------------------------------------*/
17883 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17884 ( NULL == pEventData->pEventData))
17885 {
17886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017890 }
17891
17892 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17893
17894 /*-------------------------------------------------------------------------
17895 Extract response and send it to UMAC
17896 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017897 wpalMemoryCopy( &halStatus,
17898 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017899 sizeof(halStatus));
17900
Jeff Johnsone7245742012-09-05 17:12:55 -070017901 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017902
17903 /*Notify UMAC*/
17904 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17905
Jeff Johnsone7245742012-09-05 17:12:55 -070017906 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017907}/*WDI_ProcessBtAmpEventRsp*/
17908
17909
17910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017911 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017912 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017913
17914 @param pWDICtx: pointer to the WLAN DAL context
17915 pEventData: pointer to the event information structure
17916
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 @see
17918 @return Result of the function call
17919*/
17920WDI_Status
17921WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017922(
Jeff Johnson295189b2012-06-20 16:38:30 -070017923 WDI_ControlBlockType* pWDICtx,
17924 WDI_EventInfoType* pEventData
17925)
17926{
17927 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17928 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17929 tAddStaSelfRspMsg halAddStaSelfRsp;
17930 WDI_AddStaParams wdiAddSTAParam = {0};
17931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17932
17933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 -------------------------------------------------------------------------*/
17936 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17937 ( NULL == pEventData->pEventData))
17938 {
17939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017940 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017943 }
17944
Jeff Johnsone7245742012-09-05 17:12:55 -070017945 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017946 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17947
17948 /*-------------------------------------------------------------------------
17949 Extract response and send it to UMAC
17950 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017951 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17952 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17954
17955
Jeff Johnsone7245742012-09-05 17:12:55 -070017956 wdiAddSTASelfParams.wdiStatus =
17957 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017958
Jeff Johnsone7245742012-09-05 17:12:55 -070017959 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017960 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017961 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017963 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017964 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17965
17966 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17967 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17968 WDI_MAC_ADDR_LEN);
17969
17970
17971#ifdef HAL_SELF_STA_PER_BSS
17972
17973 /* At this point add the self-STA */
17974
17975 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17976 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17977 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17978
17979 //all DPU indices are the same for self STA
17980
17981 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017982 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017983 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17984 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17985 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17986 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17987 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17988
17989 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17990 WDI_MAC_ADDR_LEN);
17991
17992 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17993 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17994
Jeff Johnsone7245742012-09-05 17:12:55 -070017995 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17997 {
17998 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17999 }
18000#endif
18001
18002 /*Notify UMAC*/
18003 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18004
Jeff Johnsone7245742012-09-05 17:12:55 -070018005 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018006}/*WDI_ProcessAddSTASelfRsp*/
18007
18008
18009
18010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018011 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018012 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018013
18014 @param pWDICtx: pointer to the WLAN DAL context
18015 pEventData: pointer to the event information structure
18016
Jeff Johnson295189b2012-06-20 16:38:30 -070018017 @see
18018 @return Result of the function call
18019*/
18020WDI_Status
18021WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018022(
Jeff Johnson295189b2012-06-20 16:38:30 -070018023 WDI_ControlBlockType* pWDICtx,
18024 WDI_EventInfoType* pEventData
18025)
18026{
18027 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18028 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18029 tDelStaSelfRspParams delStaSelfRspParams;
18030 wpt_uint8 ucStaIdx;
18031
18032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18033
18034 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018035 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018036 -------------------------------------------------------------------------*/
18037 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18038 ( NULL == pEventData->pEventData))
18039 {
18040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 }
18045
18046 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18047
18048 /*-------------------------------------------------------------------------
18049 Extract response and send it to UMAC
18050 -------------------------------------------------------------------------*/
18051
Jeff Johnsone7245742012-09-05 17:12:55 -070018052 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018053 (wpt_uint8*)pEventData->pEventData,
18054 sizeof(tDelStaSelfRspParams));
18055
Jeff Johnsone7245742012-09-05 17:12:55 -070018056 wdiDelStaSelfRspParams.wdiStatus =
18057 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018058
Jeff Johnsone7245742012-09-05 17:12:55 -070018059 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018060 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18061 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18062 {
18063 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018064 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018065 delStaSelfRspParams.selfMacAddr,
18066 &ucStaIdx);
18067 if(WDI_STATUS_E_FAILURE == wdiStatus)
18068 {
18069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018070 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018073 }
18074 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18075 }
18076
18077 /*Notify UMAC*/
18078 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18079
18080 return WDI_STATUS_SUCCESS;
18081}
18082
Jeff Johnsone7245742012-09-05 17:12:55 -070018083#ifdef FEATURE_OEM_DATA_SUPPORT
18084/**
18085 @brief Start Oem Data Rsp function (called when a
18086 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018087
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 @param pWDICtx: pointer to the WLAN DAL context
18089 pEventData: pointer to the event information structure
18090
18091 @see
18092 @return Result of the function call
18093*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018094
18095WDI_Status
18096WDI_ProcessStartOemDataRsp
18097(
18098 WDI_ControlBlockType* pWDICtx,
18099 WDI_EventInfoType* pEventData
18100)
18101{
18102 WDI_oemDataRspCb wdiOemDataRspCb;
18103 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18104 tStartOemDataRspParams* halStartOemDataRspParams;
18105
18106 /*-------------------------------------------------------------------------
18107 Sanity check
18108 -------------------------------------------------------------------------*/
18109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18110 ( NULL == pEventData->pEventData))
18111 {
18112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018113 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018114 WDI_ASSERT(0);
18115 return WDI_STATUS_E_FAILURE;
18116 }
18117
18118 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18119
18120 /*-------------------------------------------------------------------------
18121 Extract response and send it to UMAC
18122 -------------------------------------------------------------------------*/
18123 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18124
18125
18126 //It is the responsibility of the application code to check for failure
18127 //conditions!
18128
18129 //Allocate memory for WDI OEM DATA RSP structure
18130 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18131
18132 if(NULL == wdiOemDataRspParams)
18133 {
18134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018135 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018136 pWDICtx, pEventData, pEventData->pEventData);
18137 WDI_ASSERT(0);
18138 return WDI_STATUS_E_FAILURE;
18139 }
18140
18141 /* Populate WDI structure members */
18142 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18143
18144 /*Notify UMAC*/
18145 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18146
18147 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18148 wpalMemoryFree(wdiOemDataRspParams);
18149
18150 return WDI_STATUS_SUCCESS;
18151}/*WDI_PrcoessStartOemDataRsp*/
18152#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018153
18154/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018156===========================================================================*/
18157
18158/**
18159 @brief Process Channel Switch Rsp function (called when a response
18160 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018161
18162 @param pWDICtx: pointer to the WLAN DAL context
18163 pEventData: pointer to the event information structure
18164
Jeff Johnson295189b2012-06-20 16:38:30 -070018165 @see
18166 @return Result of the function call
18167*/
18168WDI_Status
18169WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018170(
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 WDI_ControlBlockType* pWDICtx,
18172 WDI_EventInfoType* pEventData
18173)
18174{
18175 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18176 WDI_SwitchChRspCb wdiChSwitchRspCb;
18177 tSwitchChannelRspParams halSwitchChannelRsp;
18178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18179
18180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 -------------------------------------------------------------------------*/
18183 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18184 ( NULL == pEventData->pEventData))
18185 {
18186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 }
18191
18192 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18193
18194 /*-------------------------------------------------------------------------
18195 Extract response and send it to UMAC
18196 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018197 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 (wpt_uint8*)pEventData->pEventData,
18199 sizeof(halSwitchChannelRsp));
18200
Jeff Johnsone7245742012-09-05 17:12:55 -070018201 wdiSwitchChRsp.wdiStatus =
18202 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018203 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18204
18205#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018206 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018207#endif
18208
18209 /*Notify UMAC*/
18210 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18211
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018213}/*WDI_ProcessChannelSwitchRsp*/
18214
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018215/**
18216 @brief Process Channel Switch Rsp function (called when a response
18217 is being received over the bus from HAL against
18218 WDI_ProcessChannelSwitchReq_V1)
18219
18220 @param pWDICtx: pointer to the WLAN DAL context
18221 pEventData: pointer to the event information structure
18222
18223 @see
18224 @return Result of the function call
18225*/
18226
18227WDI_Status
18228WDI_ProcessChannelSwitchRsp_V1
18229(
18230 WDI_ControlBlockType* pWDICtx,
18231 WDI_EventInfoType* pEventData
18232)
18233{
18234 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18235 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18236 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18238
18239 /*-------------------------------------------------------------------------
18240 Sanity check
18241 -------------------------------------------------------------------------*/
18242 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18243 ( NULL == pEventData->pEventData))
18244 {
18245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18246 "%s: Invalid parameters", __func__);
18247 WDI_ASSERT(0);
18248 return WDI_STATUS_E_FAILURE;
18249 }
18250
18251 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18252
18253 /*-------------------------------------------------------------------------
18254 Extract response and send it to UMAC
18255 -------------------------------------------------------------------------*/
18256 wpalMemoryCopy( &halSwitchChannelRsp,
18257 (wpt_uint8*)pEventData->pEventData,
18258 sizeof(halSwitchChannelRsp));
18259
18260 wdiSwitchChRsp.wdiStatus =
18261 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18262 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18263
18264#ifdef WLAN_FEATURE_VOWIFI
18265 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18266#endif
18267
18268 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18269 if (( NULL == wdiChSwitchRspCb ) )
18270 {
18271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18272 "%s: ### Call back function is null", __func__);
18273 WDI_ASSERT(0);
18274 return WDI_STATUS_E_FAILURE;
18275 }
18276 /*Notify UMAC*/
18277 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18278
18279 return WDI_STATUS_SUCCESS;
18280}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018281
18282/**
18283 @brief Process Config STA Rsp function (called when a response
18284 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018285
18286 @param pWDICtx: pointer to the WLAN DAL context
18287 pEventData: pointer to the event information structure
18288
Jeff Johnson295189b2012-06-20 16:38:30 -070018289 @see
18290 @return Result of the function call
18291*/
18292WDI_Status
18293WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018294(
Jeff Johnson295189b2012-06-20 16:38:30 -070018295 WDI_ControlBlockType* pWDICtx,
18296 WDI_EventInfoType* pEventData
18297)
18298{
18299 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18300 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18301 WDI_AddStaParams wdiAddSTAParam;
18302
18303 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018304 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018305
Jeff Johnsone7245742012-09-05 17:12:55 -070018306 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18308
18309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018311 -------------------------------------------------------------------------*/
18312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18313 ( NULL == pEventData->pEventData))
18314 {
18315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018319 }
18320
18321 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18322
18323 /*-------------------------------------------------------------------------
18324 Extract response and send it to UMAC
18325 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018326 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18327 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018328 sizeof(halConfigStaRsp.configStaRspParams));
18329
18330
18331 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18332 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18333 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18334 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18335 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18336
18337 /* MAC Address of STA - take from cache as it does not come back in the
18338 response*/
18339 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018340 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018341 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018342
18343 wdiCfgSTAParams.wdiStatus =
18344 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018345
18346 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18347 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18348 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18349
18350 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18351 {
18352 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18353 {
18354 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018355 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018356 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18357 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018358
Jeff Johnson295189b2012-06-20 16:38:30 -070018359 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018360 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018361 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 wdiAddSTAParam.ucHTCapable =
18363 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18364 wdiAddSTAParam.ucStaType =
18365 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018366 wdiAddSTAParam.ucRmfEnabled =
18367 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018368
Jeff Johnson295189b2012-06-20 16:38:30 -070018369 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018370 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18371 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018373
18374 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18375 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18376 WDI_MAC_ADDR_LEN);
18377
18378 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18379 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18380 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018381
18382 if ( NULL == pBSSSes )
18383 {
18384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18385 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018386
Jeff Johnson295189b2012-06-20 16:38:30 -070018387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018388 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018389 }
18390
18391 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018392 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018393 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018394 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018396 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018398 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018399 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018400 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018401
Jeff Johnson295189b2012-06-20 16:38:30 -070018402 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18403 }
18404 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18405 {
18406 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18407
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018410 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018411 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018412 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018413 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018414 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018415 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018416 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018417 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018418 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018419 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018420 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 halConfigStaRsp.configStaRspParams.ucUcastSig;
18422 }
18423 }
18424
18425 /*Notify UMAC*/
18426 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18427
Jeff Johnsone7245742012-09-05 17:12:55 -070018428 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018429}/*WDI_ProcessConfigStaRsp*/
18430
18431
18432/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018433 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018434 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018435
18436 @param pWDICtx: pointer to the WLAN DAL context
18437 pEventData: pointer to the event information structure
18438
Jeff Johnson295189b2012-06-20 16:38:30 -070018439 @see
18440 @return Result of the function call
18441*/
18442WDI_Status
18443WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018444(
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 WDI_ControlBlockType* pWDICtx,
18446 WDI_EventInfoType* pEventData
18447)
18448{
18449 WDI_Status wdiStatus;
18450 eHalStatus halStatus;
18451 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18452
18453 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018454 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18456
18457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018459 -------------------------------------------------------------------------*/
18460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18461 ( NULL == pEventData->pEventData))
18462 {
18463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 }
18468
18469 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18470
18471 wpalMutexAcquire(&pWDICtx->wptMutex);
18472
18473 /*If the link is being transitioned to idle - the BSS is to be deleted
18474 - this type of ending a session is possible when UMAC has failed an
18475 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018476 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018477 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18478 {
18479 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018480 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018481 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018482 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18483 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18484 &pBSSSes);
18485
Jeff Johnson295189b2012-06-20 16:38:30 -070018486 /*-----------------------------------------------------------------------
18487 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018488 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018489 -----------------------------------------------------------------------*/
18490 if ( NULL == pBSSSes )
18491 {
18492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18493 "Set link response received outside association session");
18494 }
18495 else
18496 {
18497 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18498 will be del BSS coming after this to stop the beaconing & cleaning up the
18499 sessions*/
18500 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18501 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18502 {
18503 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018504 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018505 -----------------------------------------------------------------------*/
18506 WDI_DeleteSession(pWDICtx, pBSSSes);
18507
18508 /*-----------------------------------------------------------------------
18509 Check to see if this association is in progress - if so disable the
18510 flag as this has ended
18511 -----------------------------------------------------------------------*/
18512 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018513 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018514 /*Association no longer in progress */
18515 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18516 /*Association no longer in progress - prepare pending assoc for processing*/
18517 WDI_DequeueAssocRequest(pWDICtx);
18518 }
18519 }
18520 }
18521 }
18522 /* If the link state has been set to POST ASSOC, reset the "association in
18523 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018524 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018525 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18526 {
18527 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18528 WDI_DequeueAssocRequest(pWDICtx);
18529 }
18530
18531 wpalMutexRelease(&pWDICtx->wptMutex);
18532
18533 /*-------------------------------------------------------------------------
18534 Extract response and send it to UMAC
18535 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018536 wpalMemoryCopy( &halStatus,
18537 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018538 sizeof(halStatus));
18539
Jeff Johnsone7245742012-09-05 17:12:55 -070018540 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018541
18542 /*Notify UMAC*/
18543 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18544
Jeff Johnsone7245742012-09-05 17:12:55 -070018545 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018546}/*WDI_ProcessSetLinkStateRsp*/
18547
18548/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018549 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018550 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018551
18552 @param pWDICtx: pointer to the WLAN DAL context
18553 pEventData: pointer to the event information structure
18554
Jeff Johnson295189b2012-06-20 16:38:30 -070018555 @see
18556 @return Result of the function call
18557*/
18558WDI_Status
18559WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018560(
Jeff Johnson295189b2012-06-20 16:38:30 -070018561 WDI_ControlBlockType* pWDICtx,
18562 WDI_EventInfoType* pEventData
18563)
18564{
18565 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18566 WDI_GetStatsRspCb wdiGetStatsRspCb;
18567 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018568
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18570
18571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018573 -------------------------------------------------------------------------*/
18574 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18575 ( NULL == pEventData->pEventData))
18576 {
18577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 }
18582
18583 /*-------------------------------------------------------------------------
18584 Extract response and send it to UMAC
18585 -------------------------------------------------------------------------*/
18586 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18587
18588 /*allocate the stats response buffer */
18589 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18590 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18591 + sizeof(WDI_GetStatsRspParamsType));
18592
18593 if(NULL == wdiGetStatsRsp)
18594 {
18595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018596 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018597 pWDICtx, pEventData, pEventData->pEventData);
18598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 }
18601
18602 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18603
18604 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18605 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18606 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18607 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18608 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18609 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18610
18611 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18612 wpalMemoryCopy(wdiGetStatsRsp + 1,
18613 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18614 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18615
18616 /*Notify UMAC*/
18617 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18618
18619 wpalMemoryFree(wdiGetStatsRsp);
18620
Jeff Johnsone7245742012-09-05 17:12:55 -070018621 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018622}/*WDI_ProcessGetStatsRsp*/
18623
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018624#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018625/**
18626 @brief Process Get Roam Rssi Rsp function (called when a response is
18627 being received over the bus from HAL)
18628
18629 @param pWDICtx: pointer to the WLAN DAL context
18630 pEventData: pointer to the event information structure
18631
18632 @see
18633 @return Result of the function call
18634*/
18635WDI_Status
18636WDI_ProcessGetRoamRssiRsp
18637(
18638 WDI_ControlBlockType* pWDICtx,
18639 WDI_EventInfoType* pEventData
18640)
18641{
18642 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18643 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18644 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18646
18647 /*-------------------------------------------------------------------------
18648 Sanity check
18649 -------------------------------------------------------------------------*/
18650 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18651 ( NULL == pEventData->pEventData))
18652 {
18653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18654 "%s: Invalid parameters", __func__);
18655 WDI_ASSERT(0);
18656 return WDI_STATUS_E_FAILURE;
18657 }
18658
18659 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18660 if(NULL == wdiGetRoamRssiRspCb)
18661 {
18662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18663 "%s: call back function is NULL", __func__);
18664 WDI_ASSERT(0);
18665 return WDI_STATUS_E_FAILURE;
18666 }
18667
18668 /*-------------------------------------------------------------------------
18669 Extract response and send it to UMAC
18670 -------------------------------------------------------------------------*/
18671 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18672 pEventData->pEventData,
18673 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18674
18675 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18676 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18677 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18678
18679 /*Notify UMAC*/
18680 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18681
18682 return WDI_STATUS_SUCCESS;
18683}/*WDI_ProcessGetRoamRssiRsp*/
18684#endif
18685
Jeff Johnson295189b2012-06-20 16:38:30 -070018686
18687/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018689 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018690
18691 @param pWDICtx: pointer to the WLAN DAL context
18692 pEventData: pointer to the event information structure
18693
Jeff Johnson295189b2012-06-20 16:38:30 -070018694 @see
18695 @return Result of the function call
18696*/
18697WDI_Status
18698WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018699(
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 WDI_ControlBlockType* pWDICtx,
18701 WDI_EventInfoType* pEventData
18702)
18703{
18704 WDI_Status wdiStatus;
18705 eHalStatus halStatus;
18706 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18708
18709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018711 -------------------------------------------------------------------------*/
18712 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18713 ( NULL == pEventData->pEventData))
18714 {
18715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018716 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 }
18720
18721 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18722
18723 /*-------------------------------------------------------------------------
18724 Extract response and send it to UMAC
18725 -------------------------------------------------------------------------*/
18726 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018727 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018728
18729 /*Notify UMAC*/
18730 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18731
Jeff Johnsone7245742012-09-05 17:12:55 -070018732 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018733}/*WDI_ProcessUpdateCfgRsp*/
18734
18735
18736
18737/**
18738 @brief Process Add BA Rsp function (called when a response
18739 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018740
18741 @param pWDICtx: pointer to the WLAN DAL context
18742 pEventData: pointer to the event information structure
18743
Jeff Johnson295189b2012-06-20 16:38:30 -070018744 @see
18745 @return Result of the function call
18746*/
18747WDI_Status
18748WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018749(
Jeff Johnson295189b2012-06-20 16:38:30 -070018750 WDI_ControlBlockType* pWDICtx,
18751 WDI_EventInfoType* pEventData
18752)
18753{
18754 WDI_AddBARspCb wdiAddBARspCb;
18755
18756 tAddBARspParams halAddBARsp;
18757 WDI_AddBARspinfoType wdiAddBARsp;
18758
18759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18760
18761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018763 -------------------------------------------------------------------------*/
18764 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18765 ( NULL == pEventData->pEventData))
18766 {
18767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018771 }
18772
18773 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18774
18775 /*-------------------------------------------------------------------------
18776 Extract response and send it to UMAC
18777 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018778 wpalMemoryCopy( &halAddBARsp,
18779 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018780 sizeof(halAddBARsp));
18781
18782 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18783
Jeff Johnson43971f52012-07-17 12:26:56 -070018784 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018785 {
18786 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18787 }
18788
18789 /*Notify UMAC*/
18790 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18791
Jeff Johnsone7245742012-09-05 17:12:55 -070018792 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018793}/*WDI_ProcessAddSessionBARsp*/
18794
18795/**
18796 @brief Process Add BA Rsp function (called when a response
18797 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018798
18799 @param pWDICtx: pointer to the WLAN DAL context
18800 pEventData: pointer to the event information structure
18801
Jeff Johnson295189b2012-06-20 16:38:30 -070018802 @see
18803 @return Result of the function call
18804*/
18805WDI_Status
18806WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018807(
Jeff Johnson295189b2012-06-20 16:38:30 -070018808 WDI_ControlBlockType* pWDICtx,
18809 WDI_EventInfoType* pEventData
18810)
18811{
18812 WDI_TriggerBARspCb wdiTriggerBARspCb;
18813
18814 tTriggerBARspParams* halTriggerBARsp;
18815 tTriggerBaRspCandidate* halBaCandidate;
18816 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18817 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18818 wpt_uint16 index;
18819 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018820 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18822
18823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018825 -------------------------------------------------------------------------*/
18826 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18827 ( NULL == pEventData->pEventData))
18828 {
18829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018833 }
18834
18835 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18836
18837 /*-------------------------------------------------------------------------
18838 Extract response and send it to UMAC
18839 -------------------------------------------------------------------------*/
18840 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18841
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018842 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18843
18844 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18845 {
18846 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018847 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018849
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018850 if(NULL == wdiTriggerBARsp)
18851 {
18852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018853 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018854 pWDICtx, pEventData, pEventData->pEventData);
18855 WDI_ASSERT(0);
18856 return WDI_STATUS_E_FAILURE;
18857 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018858
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018859 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18860
Jeff Johnson295189b2012-06-20 16:38:30 -070018861 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018862 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018863 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18864
18865 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18866 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18867
18868 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18869 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018870 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18872 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18873 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018874 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018875 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18878 }
18879 wdiTriggerBARspCandidate++;
18880 halBaCandidate++;
18881 }
18882 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018883 else
18884 {
18885 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18886
18887 if(NULL == wdiTriggerBARsp)
18888 {
18889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018890 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018891 pWDICtx, pEventData, pEventData->pEventData);
18892 WDI_ASSERT(0);
18893 return WDI_STATUS_E_FAILURE;
18894 }
18895
18896 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18897
18898 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018899
18900 /*Notify UMAC*/
18901 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18902
18903 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018904 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018905}/*WDI_ProcessAddSessionBARsp*/
18906
18907/**
18908 @brief Process Update Beacon Params Rsp function (called when a response
18909 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018910
18911 @param pWDICtx: pointer to the WLAN DAL context
18912 pEventData: pointer to the event information structure
18913
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 @see
18915 @return Result of the function call
18916*/
18917WDI_Status
18918WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018919(
Jeff Johnson295189b2012-06-20 16:38:30 -070018920 WDI_ControlBlockType* pWDICtx,
18921 WDI_EventInfoType* pEventData
18922)
18923{
18924 WDI_Status wdiStatus;
18925 eHalStatus halStatus;
18926 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18928
18929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018931 -------------------------------------------------------------------------*/
18932 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18933 ( NULL == pEventData->pEventData))
18934 {
18935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018939 }
18940
18941 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18942
18943 /*-------------------------------------------------------------------------
18944 Extract response and send it to UMAC
18945 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018946 wpalMemoryCopy( &halStatus,
18947 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 sizeof(halStatus));
18949
Jeff Johnsone7245742012-09-05 17:12:55 -070018950 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018951
18952 /*Notify UMAC*/
18953 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18954
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018956}/*WDI_ProcessUpdateBeaconParamsRsp*/
18957
18958/**
18959 @brief Process Send Beacon template Rsp function (called when a response
18960 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018961
18962 @param pWDICtx: pointer to the WLAN DAL context
18963 pEventData: pointer to the event information structure
18964
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 @see
18966 @return Result of the function call
18967*/
18968WDI_Status
18969WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018970(
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 WDI_ControlBlockType* pWDICtx,
18972 WDI_EventInfoType* pEventData
18973)
18974{
18975 WDI_Status wdiStatus;
18976 eHalStatus halStatus;
18977 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18979
18980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 -------------------------------------------------------------------------*/
18983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18984 ( NULL == pEventData->pEventData))
18985 {
18986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018990 }
18991
18992 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18993
18994 /*-------------------------------------------------------------------------
18995 Extract response and send it to UMAC
18996 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018997 wpalMemoryCopy( &halStatus,
18998 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018999 sizeof(halStatus));
19000
Jeff Johnsone7245742012-09-05 17:12:55 -070019001 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019002
19003 /*Notify UMAC*/
19004 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19005
Jeff Johnsone7245742012-09-05 17:12:55 -070019006 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019007}/*WDI_ProcessSendBeaconParamsRsp*/
19008
Jeff Johnsone7245742012-09-05 17:12:55 -070019009
Jeff Johnson295189b2012-06-20 16:38:30 -070019010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019011 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019012 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019013
19014 @param pWDICtx: pointer to the WLAN DAL context
19015 pEventData: pointer to the event information structure
19016
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 @see
19018 @return Result of the function call
19019*/
19020WDI_Status
19021WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019022(
Jeff Johnson295189b2012-06-20 16:38:30 -070019023 WDI_ControlBlockType* pWDICtx,
19024 WDI_EventInfoType* pEventData
19025)
19026{
19027 WDI_Status wdiStatus;
19028 eHalStatus halStatus;
19029 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19031
19032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019034 -------------------------------------------------------------------------*/
19035 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19036 ( NULL == pEventData->pEventData))
19037 {
19038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 }
19043
19044 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19045
19046 /*-------------------------------------------------------------------------
19047 Extract response and send it to UMAC
19048 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019049 wpalMemoryCopy( &halStatus,
19050 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019051 sizeof(halStatus));
19052
Jeff Johnsone7245742012-09-05 17:12:55 -070019053 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019054
19055 /*Notify UMAC*/
19056 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19057
Jeff Johnsone7245742012-09-05 17:12:55 -070019058 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019059}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19060
19061 /**
19062 @brief Process Set Max Tx Power Rsp function (called when a response
19063 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019064
19065 @param pWDICtx: pointer to the WLAN DAL context
19066 pEventData: pointer to the event information structure
19067
Jeff Johnson295189b2012-06-20 16:38:30 -070019068 @see
19069 @return Result of the function call
19070*/
19071WDI_Status
19072WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019073(
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 WDI_ControlBlockType* pWDICtx,
19075 WDI_EventInfoType* pEventData
19076)
19077{
19078 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019079
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019081
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19084
19085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019087 -------------------------------------------------------------------------*/
19088 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19089 ( NULL == pEventData->pEventData))
19090 {
19091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 }
19096
19097 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19098
19099 /*-------------------------------------------------------------------------
19100 Extract response and send it to UMAC
19101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019102 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19103 pEventData->pEventData,
19104 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019105
19106 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19107 {
19108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19109 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019111 }
19112
Jeff Johnsone7245742012-09-05 17:12:55 -070019113 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019115 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019116
19117 /*Notify UMAC*/
19118 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19119
Jeff Johnsone7245742012-09-05 17:12:55 -070019120 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019121}
19122
schang86c22c42013-03-13 18:41:24 -070019123 /**
19124 @brief Process Set Tx Power Rsp function (called when a response
19125 is being received over the bus from HAL)
19126
19127 @param pWDICtx: pointer to the WLAN DAL context
19128 pEventData: pointer to the event information structure
19129
19130 @see
19131 @return Result of the function call
19132*/
19133WDI_Status
19134WDI_ProcessSetTxPowerRsp
19135(
19136 WDI_ControlBlockType* pWDICtx,
19137 WDI_EventInfoType* pEventData
19138)
19139{
19140 tSetTxPwrRspMsg halTxpowerrsp;
19141 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19142 WDA_SetTxPowerRspCb wdiReqStatusCb;
19143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19144
19145 /*-------------------------------------------------------------------------
19146 Sanity check
19147 -------------------------------------------------------------------------*/
19148 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19149 ( NULL == pEventData->pEventData))
19150 {
19151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19152 "%s: Invalid parameters", __func__);
19153 WDI_ASSERT(0);
19154 return WDI_STATUS_E_FAILURE;
19155 }
19156
19157 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19158
19159 /*-------------------------------------------------------------------------
19160 Extract response and send it to UMAC
19161 -------------------------------------------------------------------------*/
19162 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19163 pEventData->pEventData,
19164 sizeof(halTxpowerrsp.setTxPwrRspParams));
19165
19166 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19167 {
19168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19169 "Error status returned in Set Tx Power Response ");
19170 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19171 return WDI_STATUS_E_FAILURE;
19172 }
19173
19174 wdiSetTxPowerRspMsg.wdiStatus =
19175 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19176
19177 /*Notify UMAC*/
19178 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19179
19180 return WDI_STATUS_SUCCESS;
19181}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019182
19183/**
19184 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19185 is being received over the bus from HAL)
19186
19187 @param pWDICtx: pointer to the WLAN DAL context
19188 pEventData: pointer to the event information structure
19189
19190 @see
19191 @return Result of the function call
19192*/
19193WDI_Status
19194WDI_ProcessSetMaxTxPowerPerBandRsp
19195(
19196 WDI_ControlBlockType* pWDICtx,
19197 WDI_EventInfoType* pEventData
19198)
19199{
19200 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19201 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19202 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19204
19205 /*-------------------------------------------------------------------------
19206 Sanity check
19207 -------------------------------------------------------------------------*/
19208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19209 ( NULL == pEventData->pEventData))
19210 {
19211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19212 "%s: Invalid parameters", __func__);
19213 WDI_ASSERT(0);
19214 return WDI_STATUS_E_FAILURE;
19215 }
19216
19217 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19218
19219 /*-------------------------------------------------------------------------
19220 Extract response and send it to UMAC
19221 -------------------------------------------------------------------------*/
19222 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19223 pEventData->pEventData,
19224 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19225
19226 if (eHAL_STATUS_SUCCESS !=
19227 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19228 {
19229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19230 "Error status returned in Set Max Tx Power Per Band Response");
19231 return WDI_STATUS_E_FAILURE;
19232 }
19233
19234 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19235 WDI_HAL_2_WDI_STATUS(
19236 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19237
19238 /* Notify UMAC */
19239 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19240
19241 return WDI_STATUS_SUCCESS;
19242}
19243
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019244#ifdef FEATURE_WLAN_TDLS
19245/**
19246 @brief Process TDLS Link Establish Rsp function (called
19247 when a response is being received over the bus from HAL)
19248
19249 @param pWDICtx: pointer to the WLAN DAL context
19250 pEventData: pointer to the event information structure
19251
19252 @see
19253 @return Result of the function call
19254*/
19255WDI_Status
19256WDI_ProcessLinkEstablishReqRsp
19257(
19258 WDI_ControlBlockType* pWDICtx,
19259 WDI_EventInfoType* pEventData
19260)
19261{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019262 eHalStatus halStatus;
19263 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019264 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19265 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19266
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19268
19269 /*-------------------------------------------------------------------------
19270 Sanity check
19271 -------------------------------------------------------------------------*/
19272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19273 ( NULL == pEventData->pEventData))
19274 {
19275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19276 "%s: Invalid parameters", __func__);
19277 WDI_ASSERT(0);
19278 return WDI_STATUS_E_FAILURE;
19279 }
19280
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019281 /*-------------------------------------------------------------------------
19282 Extract indication and send it to UMAC
19283 -------------------------------------------------------------------------*/
19284 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19285 pEventData->pEventData,
19286 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19287
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019288 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19289
19290 /*-------------------------------------------------------------------------
19291 Extract response and send it to UMAC
19292 -------------------------------------------------------------------------*/
19293 wpalMemoryCopy( &halStatus,
19294 pEventData->pEventData,
19295 sizeof(halStatus));
19296
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019297 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19298 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019299
19300 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019301 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019302
19303 return WDI_STATUS_SUCCESS;
19304}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019305
19306
19307
19308/**
19309 @brief Process TDLS Chan switch Rsp function (called
19310 when a response is being received over the bus from HAL)
19311
19312 @param pWDICtx: pointer to the WLAN DAL context
19313 pEventData: pointer to the event information structure
19314
19315 @see
19316 @return Result of the function call
19317*/
19318WDI_Status
19319WDI_ProcessChanSwitchReqRsp
19320(
19321 WDI_ControlBlockType* pWDICtx,
19322 WDI_EventInfoType* pEventData
19323)
19324{
19325 eHalStatus halStatus;
19326 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19327 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19328 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19329
19330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19331
19332 /*-------------------------------------------------------------------------
19333 Sanity check
19334 -------------------------------------------------------------------------*/
19335 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19336 ( NULL == pEventData->pEventData))
19337 {
19338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19339 "%s: Invalid parameters", __func__);
19340 WDI_ASSERT(0);
19341 return WDI_STATUS_E_FAILURE;
19342 }
19343
19344 /*-------------------------------------------------------------------------
19345 Extract indication and send it to UMAC
19346 -------------------------------------------------------------------------*/
19347 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19348 pEventData->pEventData,
19349 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19350
19351 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19352
19353 /*-------------------------------------------------------------------------
19354 Extract response and send it to UMAC
19355 -------------------------------------------------------------------------*/
19356 wpalMemoryCopy( &halStatus,
19357 pEventData->pEventData,
19358 sizeof(halStatus));
19359
19360 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19361 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19362
19363 /*Notify UMAC*/
19364 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19365
19366 return WDI_STATUS_SUCCESS;
19367}/*WDI_ProcessChanSwitchReqRsp*/
19368
19369
19370
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019371#endif
schang86c22c42013-03-13 18:41:24 -070019372
Jeff Johnson295189b2012-06-20 16:38:30 -070019373/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019374 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019375 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019376
19377 @param pWDICtx: pointer to the WLAN DAL context
19378 pEventData: pointer to the event information structure
19379
Jeff Johnson295189b2012-06-20 16:38:30 -070019380 @see
19381 @return Result of the function call
19382*/
19383WDI_Status
19384WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019385(
Jeff Johnson295189b2012-06-20 16:38:30 -070019386 WDI_ControlBlockType* pWDICtx,
19387 WDI_EventInfoType* pEventData
19388)
19389{
19390 WDI_Status wdiStatus;
19391 eHalStatus halStatus;
19392 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19394
19395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019397 -------------------------------------------------------------------------*/
19398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19399 ( NULL == pEventData->pEventData))
19400 {
19401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019405 }
19406
19407 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19408
19409 /*-------------------------------------------------------------------------
19410 Extract response and send it to UMAC
19411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019412 wpalMemoryCopy( &halStatus,
19413 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019414 sizeof(halStatus));
19415
Jeff Johnsone7245742012-09-05 17:12:55 -070019416 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019417
19418 /*Notify UMAC*/
19419 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19420
Jeff Johnsone7245742012-09-05 17:12:55 -070019421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019422}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019423/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019424 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019425 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019426
19427 @param pWDICtx: pointer to the WLAN DAL context
19428 pEventData: pointer to the event information structure
19429
Jeff Johnson295189b2012-06-20 16:38:30 -070019430 @see
19431 @return Result of the function call
19432*/
19433WDI_Status
19434WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019435(
Jeff Johnson295189b2012-06-20 16:38:30 -070019436 WDI_ControlBlockType* pWDICtx,
19437 WDI_EventInfoType* pEventData
19438)
19439{
19440 WDI_Status wdiStatus;
19441 eHalStatus halStatus;
19442 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019443 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19445
19446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 -------------------------------------------------------------------------*/
19449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19450 ( NULL == pEventData->pEventData))
19451 {
19452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 }
19457
19458 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19459
19460 /*-------------------------------------------------------------------------
19461 Extract response and send it to UMAC
19462 -------------------------------------------------------------------------*/
19463 halStatus = *((eHalStatus*)pEventData->pEventData);
19464
Jeff Johnsone7245742012-09-05 17:12:55 -070019465 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019466
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019467 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19468 * Other module states are taken care by PMC.
19469 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19470 */
19471 if (wdiStatus != WDI_STATUS_SUCCESS) {
19472
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19474 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19475 halStatus);
19476 /* Call Back is not required as we are putting the DXE in FULL
19477 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019478 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19479
19480 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019482 "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 -080019483 WDI_ASSERT(0);
19484 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019485 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019486 /*Notify UMAC*/
19487 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19488
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019490}/*WDI_ProcessEnterImpsRsp*/
19491
19492/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019493 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019495
19496 @param pWDICtx: pointer to the WLAN DAL context
19497 pEventData: pointer to the event information structure
19498
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 @see
19500 @return Result of the function call
19501*/
19502WDI_Status
19503WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019504(
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 WDI_ControlBlockType* pWDICtx,
19506 WDI_EventInfoType* pEventData
19507)
19508{
19509 WDI_Status wdiStatus;
19510 eHalStatus halStatus;
19511 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019512 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19514
19515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 -------------------------------------------------------------------------*/
19518 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19519 ( NULL == pEventData->pEventData))
19520 {
19521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019525 }
19526
19527 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19528
19529 /*-------------------------------------------------------------------------
19530 Extract response and send it to UMAC
19531 -------------------------------------------------------------------------*/
19532 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019534
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019535 if (halStatus != eHAL_STATUS_SUCCESS)
19536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19537 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19538
Jeff Johnson295189b2012-06-20 16:38:30 -070019539 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019540 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19541 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19542 {
19543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019544 "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 -080019545 WDI_ASSERT(0);
19546 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 /*Notify UMAC*/
19548 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19549
Jeff Johnsone7245742012-09-05 17:12:55 -070019550 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019551}/*WDI_ProcessExitImpsRsp*/
19552
19553/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019554 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019555 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019556
19557 @param pWDICtx: pointer to the WLAN DAL context
19558 pEventData: pointer to the event information structure
19559
Jeff Johnson295189b2012-06-20 16:38:30 -070019560 @see
19561 @return Result of the function call
19562*/
19563WDI_Status
19564WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019565(
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 WDI_ControlBlockType* pWDICtx,
19567 WDI_EventInfoType* pEventData
19568)
19569{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019570 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19571 tHalEnterBmpsRspParams halEnterBmpsRsp;
19572 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19573 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019574 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19576
19577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019579 -------------------------------------------------------------------------*/
19580 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19581 ( NULL == pEventData->pEventData))
19582 {
19583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 }
19588
Jeff Johnson295189b2012-06-20 16:38:30 -070019589 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019590 Extract response and send it to UMAC
19591 -------------------------------------------------------------------------*/
19592 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19593 {
19594 wpalMemoryCopy( &halEnterBmpsRsp,
19595 pEventData->pEventData,
19596 sizeof(halEnterBmpsRsp));
19597
19598 //Used to print debug message
19599 halStatus = halEnterBmpsRsp.status;
19600 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19601 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19602 }
19603 else
19604 {
19605 halStatus = *((eHalStatus*)pEventData->pEventData);
19606 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19607 }
19608
19609 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019610
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019611 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19612 * Other module states are taken care by PMC.
19613 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19614 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019615 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19616 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019617
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019619 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19620 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019621 /* Call Back is not required as we are putting the DXE in FULL
19622 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019623 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19624 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19625 {
19626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019627 "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 -080019628 WDI_ASSERT(0);
19629 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019630 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019631 }
19632
Jeff Johnson295189b2012-06-20 16:38:30 -070019633 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019634 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019635
Jeff Johnsone7245742012-09-05 17:12:55 -070019636 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019637}/*WDI_ProcessEnterBmpsRsp*/
19638
19639/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019640 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019641 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019642
19643 @param pWDICtx: pointer to the WLAN DAL context
19644 pEventData: pointer to the event information structure
19645
Jeff Johnson295189b2012-06-20 16:38:30 -070019646 @see
19647 @return Result of the function call
19648*/
19649WDI_Status
19650WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019651(
Jeff Johnson295189b2012-06-20 16:38:30 -070019652 WDI_ControlBlockType* pWDICtx,
19653 WDI_EventInfoType* pEventData
19654)
19655{
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 eHalStatus halStatus;
19657 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019658 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019659 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19660 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19662
19663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019665 -------------------------------------------------------------------------*/
19666 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19667 ( NULL == pEventData->pEventData))
19668 {
19669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019673 }
19674
19675 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19676
19677 /*-------------------------------------------------------------------------
19678 Extract response and send it to UMAC
19679 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019680
19681 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19682 {
19683 wpalMemoryCopy( &halExitBmpsRsp,
19684 pEventData->pEventData,
19685 sizeof(halExitBmpsRsp));
19686
19687 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19688 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19689 }
19690 else
19691 {
19692 halStatus = *((eHalStatus*)pEventData->pEventData);
19693 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19694 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019695
19696 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019697 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19698 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19699 {
19700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019701 "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 -080019702 WDI_ASSERT(0);
19703 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019704 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19705
19706 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019707 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019708
Jeff Johnsone7245742012-09-05 17:12:55 -070019709 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019710}/*WDI_ProcessExitBmpsRsp*/
19711
19712/**
19713 @brief Process Enter UAPSD Rsp function (called when a response
19714 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019715
19716 @param pWDICtx: pointer to the WLAN DAL context
19717 pEventData: pointer to the event information structure
19718
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 @see
19720 @return Result of the function call
19721*/
19722WDI_Status
19723WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019724(
Jeff Johnson295189b2012-06-20 16:38:30 -070019725 WDI_ControlBlockType* pWDICtx,
19726 WDI_EventInfoType* pEventData
19727)
19728{
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019730 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019731 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019732 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19733
Jeff Johnson295189b2012-06-20 16:38:30 -070019734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19735
19736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019738 -------------------------------------------------------------------------*/
19739 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19740 ( NULL == pEventData->pEventData))
19741 {
19742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 }
19747
19748 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19749
19750 /*-------------------------------------------------------------------------
19751 Extract response and send it to UMAC
19752 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019753 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19754 {
19755 wpalMemoryCopy( &halEnterUapsdRsp,
19756 pEventData->pEventData,
19757 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019758
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019759 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19760 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19761 }
19762 else
19763 {
19764 halStatus = *((eHalStatus*)pEventData->pEventData);
19765 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19766 }
19767
19768 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019769 {
19770 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19771 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19772 // the traffic to decide when to suspend the trigger frames when there is no traffic
19773 // activity on the trigger enabled ACs
19774 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19775
19776#ifdef WLAN_PERF
19777 // Increment the BD signature to refresh the fast path BD utilization
19778 pWDICtx->uBdSigSerialNum++;
19779#endif
19780 }
19781
19782 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019783 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019784
Jeff Johnsone7245742012-09-05 17:12:55 -070019785 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019786}/*WDI_ProcessEnterUapsdRsp*/
19787
19788/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019789 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019790 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019791
19792 @param pWDICtx: pointer to the WLAN DAL context
19793 pEventData: pointer to the event information structure
19794
Jeff Johnson295189b2012-06-20 16:38:30 -070019795 @see
19796 @return Result of the function call
19797*/
19798WDI_Status
19799WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019800(
Jeff Johnson295189b2012-06-20 16:38:30 -070019801 WDI_ControlBlockType* pWDICtx,
19802 WDI_EventInfoType* pEventData
19803)
19804{
Jeff Johnson295189b2012-06-20 16:38:30 -070019805 eHalStatus halStatus;
19806 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019807 tHalExitUapsdRspParams halExitUapsdRsp;
19808 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19810
19811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019812 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 -------------------------------------------------------------------------*/
19814 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19815 ( NULL == pEventData->pEventData))
19816 {
19817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 }
19822
19823 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19824
19825 /*-------------------------------------------------------------------------
19826 Extract response and send it to UMAC
19827 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019828 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19829 {
19830 wpalMemoryCopy( &halExitUapsdRsp,
19831 pEventData->pEventData,
19832 sizeof(halExitUapsdRsp));
19833
19834 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19835 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19836 }
19837 else
19838 {
19839 halStatus = *((eHalStatus*)pEventData->pEventData);
19840 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19841 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019842 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19843 // directly instead of the FW WQ.
19844 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19845
19846#ifdef WLAN_PERF
19847 // Increment the BD signature to refresh the fast path BD utilization
19848 pWDICtx->uBdSigSerialNum++;
19849#endif
19850
19851 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019852 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019853
Jeff Johnsone7245742012-09-05 17:12:55 -070019854 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019855}/*WDI_ProcessExitUapsdRsp*/
19856
19857/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019858 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019860
19861 @param pWDICtx: pointer to the WLAN DAL context
19862 pEventData: pointer to the event information structure
19863
Jeff Johnson295189b2012-06-20 16:38:30 -070019864 @see
19865 @return Result of the function call
19866*/
19867WDI_Status
19868WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019869(
Jeff Johnson295189b2012-06-20 16:38:30 -070019870 WDI_ControlBlockType* pWDICtx,
19871 WDI_EventInfoType* pEventData
19872)
19873{
19874 WDI_Status wdiStatus;
19875 eHalStatus halStatus;
19876 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19878
19879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019881 -------------------------------------------------------------------------*/
19882 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19883 ( NULL == pEventData->pEventData))
19884 {
19885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019889 }
19890
19891 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19892
19893 /*-------------------------------------------------------------------------
19894 Extract response and send it to UMAC
19895 -------------------------------------------------------------------------*/
19896 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019897 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019898
19899 /*Notify UMAC*/
19900 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19901
Jeff Johnsone7245742012-09-05 17:12:55 -070019902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019903}/*WDI_ProcessSetUapsdAcParamsRsp*/
19904
19905/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019906 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019908
19909 @param pWDICtx: pointer to the WLAN DAL context
19910 pEventData: pointer to the event information structure
19911
Jeff Johnson295189b2012-06-20 16:38:30 -070019912 @see
19913 @return Result of the function call
19914*/
19915WDI_Status
19916WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019917(
Jeff Johnson295189b2012-06-20 16:38:30 -070019918 WDI_ControlBlockType* pWDICtx,
19919 WDI_EventInfoType* pEventData
19920)
19921{
19922 WDI_Status wdiStatus;
19923 eHalStatus halStatus;
19924 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19926
19927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 -------------------------------------------------------------------------*/
19930 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19931 ( NULL == pEventData->pEventData))
19932 {
19933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 }
19938
19939 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19940
19941 /*-------------------------------------------------------------------------
19942 Extract response and send it to UMAC
19943 -------------------------------------------------------------------------*/
19944 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019945 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019946
19947 /*Notify UMAC*/
19948 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19949
Jeff Johnsone7245742012-09-05 17:12:55 -070019950 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019951}/*WDI_ProcessUpdateUapsdParamsRsp*/
19952
19953/**
19954 @brief Process Configure RXP filter Rsp function (called when a
19955 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019956
19957 @param pWDICtx: pointer to the WLAN DAL context
19958 pEventData: pointer to the event information structure
19959
Jeff Johnson295189b2012-06-20 16:38:30 -070019960 @see
19961 @return Result of the function call
19962*/
19963WDI_Status
19964WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019965(
Jeff Johnson295189b2012-06-20 16:38:30 -070019966 WDI_ControlBlockType* pWDICtx,
19967 WDI_EventInfoType* pEventData
19968)
19969{
19970 WDI_Status wdiStatus;
19971 eHalStatus halStatus;
19972 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19974
19975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019977 -------------------------------------------------------------------------*/
19978 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19979 ( NULL == pEventData->pEventData))
19980 {
19981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019985 }
19986
19987 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19988
19989 /*-------------------------------------------------------------------------
19990 Extract response and send it to UMAC
19991 -------------------------------------------------------------------------*/
19992 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019993 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019994
19995 /*Notify UMAC*/
19996 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19997
Jeff Johnsone7245742012-09-05 17:12:55 -070019998 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019999}/*WDI_ProcessConfigureRxpFilterRsp*/
20000
20001/**
20002 @brief Process Set beacon filter Rsp function (called when a
20003 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020004
20005 @param pWDICtx: pointer to the WLAN DAL context
20006 pEventData: pointer to the event information structure
20007
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 @see
20009 @return Result of the function call
20010*/
20011WDI_Status
20012WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020013(
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 WDI_ControlBlockType* pWDICtx,
20015 WDI_EventInfoType* pEventData
20016)
20017{
20018 WDI_Status wdiStatus;
20019 eHalStatus halStatus;
20020 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20022
20023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020025 -------------------------------------------------------------------------*/
20026 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20027 ( NULL == pEventData->pEventData))
20028 {
20029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020030 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020033 }
20034
20035 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20036
20037 /*-------------------------------------------------------------------------
20038 Extract response and send it to UMAC
20039 -------------------------------------------------------------------------*/
20040 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020041 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020042
20043 /*Notify UMAC*/
20044 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20045
Jeff Johnsone7245742012-09-05 17:12:55 -070020046 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020047}/*WDI_ProcessSetBeaconFilterRsp*/
20048
20049/**
20050 @brief Process remove beacon filter Rsp function (called when a
20051 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020052
20053 @param pWDICtx: pointer to the WLAN DAL context
20054 pEventData: pointer to the event information structure
20055
Jeff Johnson295189b2012-06-20 16:38:30 -070020056 @see
20057 @return Result of the function call
20058*/
20059WDI_Status
20060WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020061(
Jeff Johnson295189b2012-06-20 16:38:30 -070020062 WDI_ControlBlockType* pWDICtx,
20063 WDI_EventInfoType* pEventData
20064)
20065{
20066 WDI_Status wdiStatus;
20067 eHalStatus halStatus;
20068 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20070
20071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020073 -------------------------------------------------------------------------*/
20074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20075 ( NULL == pEventData->pEventData))
20076 {
20077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 }
20082
20083 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20084
20085 /*-------------------------------------------------------------------------
20086 Extract response and send it to UMAC
20087 -------------------------------------------------------------------------*/
20088 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020089 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020090
20091 /*Notify UMAC*/
20092 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20093
Jeff Johnsone7245742012-09-05 17:12:55 -070020094 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020095}/*WDI_ProcessRemBeaconFilterRsp*/
20096
20097/**
20098 @brief Process set RSSI thresholds Rsp function (called when a
20099 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020100
20101 @param pWDICtx: pointer to the WLAN DAL context
20102 pEventData: pointer to the event information structure
20103
Jeff Johnson295189b2012-06-20 16:38:30 -070020104 @see
20105 @return Result of the function call
20106*/
20107WDI_Status
20108WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020109(
Jeff Johnson295189b2012-06-20 16:38:30 -070020110 WDI_ControlBlockType* pWDICtx,
20111 WDI_EventInfoType* pEventData
20112)
20113{
20114 WDI_Status wdiStatus;
20115 eHalStatus halStatus;
20116 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20118
20119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020120 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 -------------------------------------------------------------------------*/
20122 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20123 ( NULL == pEventData->pEventData))
20124 {
20125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020129 }
20130
20131 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20132
20133 /*-------------------------------------------------------------------------
20134 Extract response and send it to UMAC
20135 -------------------------------------------------------------------------*/
20136 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020137 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020138
20139 /*Notify UMAC*/
20140 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20141
Jeff Johnsone7245742012-09-05 17:12:55 -070020142 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020143}/*WDI_ProcessSetRSSIThresoldsRsp*/
20144
20145/**
20146 @brief Process host offload Rsp function (called when a
20147 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020148
20149 @param pWDICtx: pointer to the WLAN DAL context
20150 pEventData: pointer to the event information structure
20151
Jeff Johnson295189b2012-06-20 16:38:30 -070020152 @see
20153 @return Result of the function call
20154*/
20155WDI_Status
20156WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020157(
Jeff Johnson295189b2012-06-20 16:38:30 -070020158 WDI_ControlBlockType* pWDICtx,
20159 WDI_EventInfoType* pEventData
20160)
20161{
20162 WDI_Status wdiStatus;
20163 eHalStatus halStatus;
20164 WDI_HostOffloadCb wdiHostOffloadCb;
20165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20166
20167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020168 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020169 -------------------------------------------------------------------------*/
20170 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20171 ( NULL == pEventData->pEventData))
20172 {
20173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020174 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020177 }
20178
20179 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20180
20181 /*-------------------------------------------------------------------------
20182 Extract response and send it to UMAC
20183 -------------------------------------------------------------------------*/
20184 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020185 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020186
20187 /*Notify UMAC*/
20188 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20189
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020191}/*WDI_ProcessHostOffloadRsp*/
20192
20193/**
20194 @brief Process keep alive Rsp function (called when a
20195 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020196
20197 @param pWDICtx: pointer to the WLAN DAL context
20198 pEventData: pointer to the event information structure
20199
Jeff Johnson295189b2012-06-20 16:38:30 -070020200 @see
20201 @return Result of the function call
20202*/
20203WDI_Status
20204WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020205(
Jeff Johnson295189b2012-06-20 16:38:30 -070020206 WDI_ControlBlockType* pWDICtx,
20207 WDI_EventInfoType* pEventData
20208)
20209{
20210 WDI_Status wdiStatus;
20211 eHalStatus halStatus;
20212 WDI_KeepAliveCb wdiKeepAliveCb;
20213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20215 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20216
20217
20218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 -------------------------------------------------------------------------*/
20221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20222 ( NULL == pEventData->pEventData))
20223 {
20224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020228 }
20229
Jeff Johnsone7245742012-09-05 17:12:55 -070020230 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20231
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 /*-------------------------------------------------------------------------
20233 Extract response and send it to UMAC
20234 -------------------------------------------------------------------------*/
20235 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020236 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020237
20238 /*Notify UMAC*/
20239 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20240
Jeff Johnsone7245742012-09-05 17:12:55 -070020241 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020242}/*WDI_ProcessKeepAliveRsp*/
20243
20244/**
20245 @brief Process wowl add ptrn Rsp function (called when a
20246 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020247
20248 @param pWDICtx: pointer to the WLAN DAL context
20249 pEventData: pointer to the event information structure
20250
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 @see
20252 @return Result of the function call
20253*/
20254WDI_Status
20255WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020256(
Jeff Johnson295189b2012-06-20 16:38:30 -070020257 WDI_ControlBlockType* pWDICtx,
20258 WDI_EventInfoType* pEventData
20259)
20260{
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 eHalStatus halStatus;
20262 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020263 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20264 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20265
Jeff Johnson295189b2012-06-20 16:38:30 -070020266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20267
20268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020270 -------------------------------------------------------------------------*/
20271 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20272 ( NULL == pEventData->pEventData))
20273 {
20274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020278 }
20279
20280 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20281
20282 /*-------------------------------------------------------------------------
20283 Extract response and send it to UMAC
20284 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020285 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20286 {
20287 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20288 pEventData->pEventData,
20289 sizeof(halAddWowlBcastPtrRsp));
20290
20291 wdiWowlAddBcPtrRsp.wdiStatus =
20292 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20293 }
20294 else
20295 {
20296 halStatus = *((eHalStatus*)pEventData->pEventData);
20297 wdiWowlAddBcPtrRsp.wdiStatus =
20298 WDI_HAL_2_WDI_STATUS(halStatus);
20299 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020300
20301 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020302 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020303
Jeff Johnsone7245742012-09-05 17:12:55 -070020304 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020305}/*WDI_ProcessWowlAddBcPtrnRsp*/
20306
20307/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020308 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020309 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020310
20311 @param pWDICtx: pointer to the WLAN DAL context
20312 pEventData: pointer to the event information structure
20313
Jeff Johnson295189b2012-06-20 16:38:30 -070020314 @see
20315 @return Result of the function call
20316*/
20317WDI_Status
20318WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020319(
Jeff Johnson295189b2012-06-20 16:38:30 -070020320 WDI_ControlBlockType* pWDICtx,
20321 WDI_EventInfoType* pEventData
20322)
20323{
Jeff Johnson295189b2012-06-20 16:38:30 -070020324 eHalStatus halStatus;
20325 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020326 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20327 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20329
20330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020331 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020332 -------------------------------------------------------------------------*/
20333 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20334 ( NULL == pEventData->pEventData))
20335 {
20336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020337 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020338 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020339 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020340 }
20341
20342 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20343
20344 /*-------------------------------------------------------------------------
20345 Extract response and send it to UMAC
20346 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020347 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20348 {
20349 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20350 pEventData->pEventData,
20351 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020352
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020353 wdiWowlDelBcstPtrRsp.wdiStatus =
20354 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20355 }
20356 else
20357 {
20358 halStatus = *((eHalStatus*)pEventData->pEventData);
20359 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20360 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020362 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020363
Jeff Johnsone7245742012-09-05 17:12:55 -070020364 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020365}/*WDI_ProcessWowlDelBcPtrnRsp*/
20366
20367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020370
20371 @param pWDICtx: pointer to the WLAN DAL context
20372 pEventData: pointer to the event information structure
20373
Jeff Johnson295189b2012-06-20 16:38:30 -070020374 @see
20375 @return Result of the function call
20376*/
20377WDI_Status
20378WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020379(
Jeff Johnson295189b2012-06-20 16:38:30 -070020380 WDI_ControlBlockType* pWDICtx,
20381 WDI_EventInfoType* pEventData
20382)
20383{
Jeff Johnson295189b2012-06-20 16:38:30 -070020384 eHalStatus halStatus;
20385 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020386 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20387 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20389
20390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 -------------------------------------------------------------------------*/
20393 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20394 ( NULL == pEventData->pEventData))
20395 {
20396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 }
20401
20402 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20403
20404 /*-------------------------------------------------------------------------
20405 Extract response and send it to UMAC
20406 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020407 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20408 {
20409 wpalMemoryCopy( &halEnterWowlRspParams,
20410 (wpt_uint8*)pEventData->pEventData,
20411 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020412
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020413 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20414 wdiwowlEnterRsp.status =
20415 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20416 }
20417 else
20418 {
20419 halStatus = *((eHalStatus*)pEventData->pEventData);
20420 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20421 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020423 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020424
Jeff Johnsone7245742012-09-05 17:12:55 -070020425 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020426}/*WDI_ProcessWowlEnterRsp*/
20427
20428/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020429 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020431
20432 @param pWDICtx: pointer to the WLAN DAL context
20433 pEventData: pointer to the event information structure
20434
Jeff Johnson295189b2012-06-20 16:38:30 -070020435 @see
20436 @return Result of the function call
20437*/
20438WDI_Status
20439WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020440(
Jeff Johnson295189b2012-06-20 16:38:30 -070020441 WDI_ControlBlockType* pWDICtx,
20442 WDI_EventInfoType* pEventData
20443)
20444{
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 eHalStatus halStatus;
20446 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020447 tHalExitWowlRspParams halExitWowlRspParams;
20448 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20449
Jeff Johnson295189b2012-06-20 16:38:30 -070020450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20451
20452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020454 -------------------------------------------------------------------------*/
20455 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20456 ( NULL == pEventData->pEventData))
20457 {
20458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020462 }
20463
20464 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20465
20466 /*-------------------------------------------------------------------------
20467 Extract response and send it to UMAC
20468 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020469 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20470 {
20471 wpalMemoryCopy( &halExitWowlRspParams,
20472 pEventData->pEventData,
20473 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020474
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020475 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20476 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20477
20478 }
20479 else
20480 {
20481 halStatus = *((eHalStatus*)pEventData->pEventData);
20482 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20483 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020485 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020486
Jeff Johnsone7245742012-09-05 17:12:55 -070020487 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020488}/*WDI_ProcessWowlExitRsp*/
20489
20490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 (called when a response is being received over the bus
20493 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020494
20495 @param pWDICtx: pointer to the WLAN DAL context
20496 pEventData: pointer to the event information structure
20497
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 @see
20499 @return Result of the function call
20500*/
20501WDI_Status
20502WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020503(
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 WDI_ControlBlockType* pWDICtx,
20505 WDI_EventInfoType* pEventData
20506)
20507{
20508 WDI_Status wdiStatus;
20509 eHalStatus halStatus;
20510 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20512
20513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020515 -------------------------------------------------------------------------*/
20516 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20517 ( NULL == pEventData->pEventData))
20518 {
20519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020520 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020523 }
20524
20525 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20526
20527 /*-------------------------------------------------------------------------
20528 Extract response and send it to UMAC
20529 -------------------------------------------------------------------------*/
20530 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020531 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020532
20533 /*Notify UMAC*/
20534 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20535
Jeff Johnsone7245742012-09-05 17:12:55 -070020536 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020537}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20538
20539
20540/**
20541 @brief Process Nv download(called when a response
20542 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020543
20544 @param pWDICtx: pointer to the WLAN DAL context
20545 pEventData: pointer to the event information structure
20546
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 @see
20548 @return Result of the function call
20549*/
20550WDI_Status
20551WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020552(
Jeff Johnson295189b2012-06-20 16:38:30 -070020553 WDI_ControlBlockType* pWDICtx,
20554 WDI_EventInfoType* pEventData
20555)
20556{
20557
20558 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20559 tHalNvImgDownloadRspParams halNvDownloadRsp;
20560 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20561
20562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020564 -------------------------------------------------------------------------*/
20565 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20566 ( NULL == pEventData->pEventData))
20567 {
20568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 }
20573
20574 /*-------------------------------------------------------------------------
20575 Extract response and send it to UMAC
20576 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020577 wpalMemoryCopy( &halNvDownloadRsp,
20578 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020579 sizeof(halNvDownloadRsp));
20580
20581 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20582
20583 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020584 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20585 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 {
20587 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020588 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020589 }
20590 else
20591 {
20592 /*Reset the Nv related global information in WDI context information */
20593 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20594 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20595 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20596 /*call WDA callback function for last fragment */
20597 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20598 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20599 }
20600
Jeff Johnsone7245742012-09-05 17:12:55 -070020601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020602}
20603#ifdef WLAN_FEATURE_VOWIFI_11R
20604/**
20605 @brief Process Add TSpec Rsp function (called when a response
20606 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020607
20608 @param pWDICtx: pointer to the WLAN DAL context
20609 pEventData: pointer to the event information structure
20610
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 @see
20612 @return Result of the function call
20613*/
20614WDI_Status
20615WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020616(
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 WDI_ControlBlockType* pWDICtx,
20618 WDI_EventInfoType* pEventData
20619)
20620{
20621 WDI_Status wdiStatus;
20622 tAggrAddTsRspParams aggrAddTsRsp;
20623 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20625
20626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 -------------------------------------------------------------------------*/
20629 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20630 ( NULL == pEventData->pEventData))
20631 {
20632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020636 }
20637
20638 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20639
20640 /*-------------------------------------------------------------------------
20641 Extract response and send it to UMAC
20642 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 wpalMemoryCopy( &aggrAddTsRsp,
20644 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 sizeof(aggrAddTsRsp));
20646
20647 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020648 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020649
20650 /*Notify UMAC*/
20651 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20652
Jeff Johnsone7245742012-09-05 17:12:55 -070020653 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020654}/*WDI_ProcessAddTSpecRsp*/
20655#endif /* WLAN_FEATURE_VOWIFI_11R */
20656
20657/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020658 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020659 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020660
20661 @param pWDICtx: pointer to the WLAN DAL context
20662 pEventData: pointer to the event information structure
20663
Jeff Johnson295189b2012-06-20 16:38:30 -070020664 @see
20665 @return Result of the function call
20666*/
20667WDI_Status
20668WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020669(
Jeff Johnson295189b2012-06-20 16:38:30 -070020670 WDI_ControlBlockType* pWDICtx,
20671 WDI_EventInfoType* pEventData
20672)
20673{
20674 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20675 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20676 tHalHostResumeRspParams hostResumeRspMsg;
20677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20678
20679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020680 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020681 -------------------------------------------------------------------------*/
20682 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20683 ( NULL == pEventData->pEventData))
20684 {
20685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020686 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020689 }
20690
20691 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20692
20693 /*-------------------------------------------------------------------------
20694 Extract response and send it to UMAC
20695 -------------------------------------------------------------------------*/
20696
Jeff Johnsone7245742012-09-05 17:12:55 -070020697 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 (wpt_uint8*)pEventData->pEventData,
20699 sizeof(hostResumeRspMsg));
20700
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 wdiResumeRspParams.wdiStatus =
20702 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020703
20704 /*Notify UMAC*/
20705 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20706
20707 return WDI_STATUS_SUCCESS;
20708}
20709
20710/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020711 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020712 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020713
20714 @param pWDICtx: pointer to the WLAN DAL context
20715 pEventData: pointer to the event information structure
20716
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 @see
20718 @return Result of the function call
20719*/
20720WDI_Status
20721WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020722(
Jeff Johnson295189b2012-06-20 16:38:30 -070020723 WDI_ControlBlockType* pWDICtx,
20724 WDI_EventInfoType* pEventData
20725)
20726{
20727 WDI_Status wdiStatus;
20728 eHalStatus halStatus;
20729 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20731
20732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020734 -------------------------------------------------------------------------*/
20735 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20736 ( NULL == pEventData->pEventData))
20737 {
20738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020743
20744 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020745
20746 /*-------------------------------------------------------------------------
20747 Extract response and send it to UMAC
20748 -------------------------------------------------------------------------*/
20749 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020750 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020751
20752 /*Notify UMAC*/
20753 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20754
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020756}/*WDI_ProcessSetTxPerTrackingRsp*/
20757
20758/*==========================================================================
20759 Indications from HAL
20760 ==========================================================================*/
20761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020762 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020763 indication of this kind is being received over the bus
20764 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020765
20766 @param pWDICtx: pointer to the WLAN DAL context
20767 pEventData: pointer to the event information structure
20768
Jeff Johnson295189b2012-06-20 16:38:30 -070020769 @see
20770 @return Result of the function call
20771*/
20772WDI_Status
20773WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020774(
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 WDI_ControlBlockType* pWDICtx,
20776 WDI_EventInfoType* pEventData
20777)
20778{
20779 WDI_LowLevelIndType wdiInd;
20780 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20782
20783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020785 -------------------------------------------------------------------------*/
20786 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20787 ( NULL == pEventData->pEventData))
20788 {
20789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 }
20794
20795 /*-------------------------------------------------------------------------
20796 Extract indication and send it to UMAC
20797 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020798 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20799 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020800 sizeof(tHalRSSINotification));
20801
20802 /*Fill in the indication parameters*/
20803 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20804 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20805 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20806 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20807 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20808 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20809 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20810 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20811 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20812 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20813 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20814 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20815 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020816 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20817 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020818
ltimariub77f24b2013-01-24 18:54:33 -080020819 if ( pWDICtx->wdiLowLevelIndCB )
20820 {
20821 /*Notify UMAC of indication*/
20822 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20823 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020824
20825 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020826}/*WDI_ProcessLowRSSIInd*/
20827
20828
20829/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 an indication of this kind is being received over the
20832 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020833
20834 @param pWDICtx: pointer to the WLAN DAL context
20835 pEventData: pointer to the event information structure
20836
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 @see
20838 @return Result of the function call
20839*/
20840WDI_Status
20841WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020842(
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 WDI_ControlBlockType* pWDICtx,
20844 WDI_EventInfoType* pEventData
20845)
20846{
20847 WDI_Status wdiStatus;
20848 eHalStatus halStatus;
20849 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020850 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20852
20853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 -------------------------------------------------------------------------*/
20856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20857 ( NULL == pEventData->pEventData))
20858 {
20859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020864 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 /*-------------------------------------------------------------------------
20866 Extract indication and send it to UMAC
20867 -------------------------------------------------------------------------*/
20868 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20869 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020870 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020871
20872 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020873 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020874 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20875 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020876 if ( pWDICtx->wdiLowLevelIndCB )
20877 {
20878 /*Notify UMAC*/
20879 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20880 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020881
20882 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020883}/*WDI_ProcessMissedBeaconInd*/
20884
20885
20886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 an indication of this kind is being received over the
20889 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020890
20891 @param pWDICtx: pointer to the WLAN DAL context
20892 pEventData: pointer to the event information structure
20893
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 @see
20895 @return Result of the function call
20896*/
20897WDI_Status
20898WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020899(
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 WDI_ControlBlockType* pWDICtx,
20901 WDI_EventInfoType* pEventData
20902)
20903{
20904 WDI_Status wdiStatus;
20905 eHalStatus halStatus;
20906 WDI_LowLevelIndType wdiInd;
20907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20908
20909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020911 -------------------------------------------------------------------------*/
20912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20913 ( NULL == pEventData->pEventData))
20914 {
20915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 }
20920
20921 /*-------------------------------------------------------------------------
20922 Extract indication and send it to UMAC
20923 -------------------------------------------------------------------------*/
20924 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20925 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020926 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020927
20928 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 /* ! TO DO - fill in from HAL struct:
20931 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20932
ltimariub77f24b2013-01-24 18:54:33 -080020933 if ( pWDICtx->wdiLowLevelIndCB )
20934 {
20935 /*Notify UMAC*/
20936 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20937 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020938
20939 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020940}/*WDI_ProcessUnkAddrFrameInd*/
20941
20942
20943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020944 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020945 indication of this kind is being received over the bus
20946 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020947
20948 @param pWDICtx: pointer to the WLAN DAL context
20949 pEventData: pointer to the event information structure
20950
Jeff Johnson295189b2012-06-20 16:38:30 -070020951 @see
20952 @return Result of the function call
20953*/
20954WDI_Status
20955WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020956(
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 WDI_ControlBlockType* pWDICtx,
20958 WDI_EventInfoType* pEventData
20959)
20960{
20961 WDI_LowLevelIndType wdiInd;
20962 tpSirMicFailureInd pHalMicFailureInd;
20963
20964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20965
20966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020968 -------------------------------------------------------------------------*/
20969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20970 ( NULL == pEventData->pEventData))
20971 {
20972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020976 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020977
Jeff Johnson295189b2012-06-20 16:38:30 -070020978 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20979 /*-------------------------------------------------------------------------
20980 Extract indication and send it to UMAC
20981 -------------------------------------------------------------------------*/
20982
20983 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020984 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020985 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20986 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20987 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20988 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20989 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20990 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20991 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20992 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020993 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020994 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020995 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020997 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 pHalMicFailureInd->info.keyId;
20999 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21000 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21001 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21002 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021003
21004 if ( pWDICtx->wdiLowLevelIndCB )
21005 {
21006 /*Notify UMAC*/
21007 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21008 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021009
21010 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021011}/*WDI_ProcessMicFailureInd*/
21012
21013
21014/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021015 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 an indication of this kind is being received over the
21017 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021018
21019 @param pWDICtx: pointer to the WLAN DAL context
21020 pEventData: pointer to the event information structure
21021
Jeff Johnson295189b2012-06-20 16:38:30 -070021022 @see
21023 @return Result of the function call
21024*/
21025WDI_Status
21026WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021027(
Jeff Johnson295189b2012-06-20 16:38:30 -070021028 WDI_ControlBlockType* pWDICtx,
21029 WDI_EventInfoType* pEventData
21030)
21031{
21032 WDI_Status wdiStatus;
21033 eHalStatus halStatus;
21034 WDI_LowLevelIndType wdiInd;
21035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21036
21037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021039 -------------------------------------------------------------------------*/
21040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21041 ( NULL == pEventData->pEventData))
21042 {
21043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 }
21048
21049 /*-------------------------------------------------------------------------
21050 Extract indication and send it to UMAC
21051 -------------------------------------------------------------------------*/
21052
21053 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21054 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021055 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021056
21057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21058 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021059
Jeff Johnson295189b2012-06-20 16:38:30 -070021060 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021061 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21062 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021063
ltimariub77f24b2013-01-24 18:54:33 -080021064 if ( pWDICtx->wdiLowLevelIndCB )
21065 {
21066 /*Notify UMAC*/
21067 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21068 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021069
21070 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021071}/*WDI_ProcessFatalErrorInd*/
21072
21073/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021074 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021075 an indication of this kind is being received over the
21076 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021077
21078 @param pWDICtx: pointer to the WLAN DAL context
21079 pEventData: pointer to the event information structure
21080
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 @see
21082 @return Result of the function call
21083*/
21084WDI_Status
21085WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021086(
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 WDI_ControlBlockType* pWDICtx,
21088 WDI_EventInfoType* pEventData
21089)
21090{
21091 tDeleteStaContextParams halDelSTACtx;
21092 WDI_LowLevelIndType wdiInd;
21093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21094
21095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021097 -------------------------------------------------------------------------*/
21098 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21099 ( NULL == pEventData->pEventData))
21100 {
21101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021102 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 }
21106
21107 /*-------------------------------------------------------------------------
21108 Extract indication and send it to UMAC
21109 -------------------------------------------------------------------------*/
21110
21111 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021112 wpalMemoryCopy( &halDelSTACtx,
21113 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021114 sizeof(halDelSTACtx));
21115
21116 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021118
21119 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21120 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21121 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21122 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21123
Jeff Johnsone7245742012-09-05 17:12:55 -070021124 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021125 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21129 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021130
ltimariub77f24b2013-01-24 18:54:33 -080021131 if ( pWDICtx->wdiLowLevelIndCB )
21132 {
21133 /*Notify UMAC*/
21134 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21135 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021136
21137 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021138}/*WDI_ProcessDelSTAInd*/
21139
21140/**
21141*@brief Process Coex Indication function (called when
21142 an indication of this kind is being received over the
21143 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021144
21145 @param pWDICtx: pointer to the WLAN DAL context
21146 pEventData: pointer to the event information structure
21147
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 @see
21149 @return Result of the function call
21150*/
21151WDI_Status
21152WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021153(
Jeff Johnson295189b2012-06-20 16:38:30 -070021154 WDI_ControlBlockType* pWDICtx,
21155 WDI_EventInfoType* pEventData
21156)
21157{
21158 WDI_LowLevelIndType wdiInd;
21159 tCoexIndMsg halCoexIndMsg;
21160 wpt_uint32 index;
21161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21162
21163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021165 -------------------------------------------------------------------------*/
21166 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21167 ( NULL == pEventData->pEventData ))
21168 {
21169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021171 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021173 }
21174
21175 /*-------------------------------------------------------------------------
21176 Extract indication and send it to UMAC
21177 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021178 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21179 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021180 sizeof(halCoexIndMsg.coexIndParams) );
21181
21182 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021183 wdiInd.wdiIndicationType = WDI_COEX_IND;
21184 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21186 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021187 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 }
21189
21190 // DEBUG
21191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21192 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021193 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21194 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21195 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21196 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21197 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021198
ltimariub77f24b2013-01-24 18:54:33 -080021199 if ( pWDICtx->wdiLowLevelIndCB )
21200 {
21201 /*Notify UMAC*/
21202 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21203 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021204
21205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021206}/*WDI_ProcessCoexInd*/
21207
21208/**
21209*@brief Process Tx Complete Indication function (called when
21210 an indication of this kind is being received over the
21211 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021212
21213 @param pWDICtx: pointer to the WLAN DAL context
21214 pEventData: pointer to the event information structure
21215
Jeff Johnson295189b2012-06-20 16:38:30 -070021216 @see
21217 @return Result of the function call
21218*/
21219WDI_Status
21220WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021221(
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 WDI_ControlBlockType* pWDICtx,
21223 WDI_EventInfoType* pEventData
21224)
21225{
21226 WDI_LowLevelIndType wdiInd;
21227 tTxComplIndMsg halTxComplIndMsg;
21228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21229
21230 /*-------------------------------------------------------------------------
21231 Sanity check
21232 -------------------------------------------------------------------------*/
21233 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21234 ( NULL == pEventData->pEventData ))
21235 {
21236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021238 WDI_ASSERT( 0 );
21239 return WDI_STATUS_E_FAILURE;
21240 }
21241
21242 /*-------------------------------------------------------------------------
21243 Extract indication and send it to UMAC
21244 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21246 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021247 sizeof(halTxComplIndMsg.txComplParams) );
21248
21249 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021250 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
21251 wdiInd.wdiIndicationData.tx_complete_status
21252 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070021253
ltimariub77f24b2013-01-24 18:54:33 -080021254 if ( pWDICtx->wdiLowLevelIndCB )
21255 {
21256 /*Notify UMAC*/
21257 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21258 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021259
21260 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021261}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021262#ifdef FEATURE_WLAN_TDLS
21263/**
21264*@brief Process TDLS Indication function (called when
21265 an indication of this kind is being received over the
21266 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021267
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021268 @param pWDICtx: pointer to the WLAN DAL context
21269 pEventData: pointer to the event information structure
21270
21271 @see
21272 @return Result of the function call
21273*/
21274WDI_Status
21275WDI_ProcessTdlsInd
21276(
21277 WDI_ControlBlockType* pWDICtx,
21278 WDI_EventInfoType* pEventData
21279)
21280{
21281 WDI_LowLevelIndType wdiInd;
21282 tTdlsIndMsg halTdlsIndMsg;
21283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21284
21285 /*-------------------------------------------------------------------------
21286 Sanity check
21287 -------------------------------------------------------------------------*/
21288 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21289 ( NULL == pEventData->pEventData ))
21290 {
21291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21292 "%s: Invalid parameters", __func__);
21293 WDI_ASSERT( 0 );
21294 return WDI_STATUS_E_FAILURE;
21295 }
21296
21297 /*-------------------------------------------------------------------------
21298 Extract indication and send it to UMAC
21299 -------------------------------------------------------------------------*/
21300 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21301 pEventData->pEventData,
21302 sizeof(halTdlsIndMsg.tdlsIndParams) );
21303
21304 /*Fill in the indication parameters*/
21305 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21306
21307 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21308 = halTdlsIndMsg.tdlsIndParams.status;
21309
21310 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21311 = halTdlsIndMsg.tdlsIndParams.staIdx;
21312
21313 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21314 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21315
Atul Mittalbb2aad02014-09-22 19:09:36 +053021316 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21317 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021318 /*Notify UMAC*/
21319 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21320
21321 return WDI_STATUS_SUCCESS;
21322}/*WDI_ProcessTdlsInd*/
21323#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021324/**
Viral Modid86bde22012-12-10 13:09:21 -080021325*@brief Process Noa Start Indication function (called when
21326 an indication of this kind is being received over the
21327 bus from HAL)
21328
21329 @param pWDICtx: pointer to the WLAN DAL context
21330 pEventData: pointer to the event information structure
21331
21332 @see
21333 @return Result of the function call
21334*/
21335WDI_Status
21336WDI_ProcessP2pNoaStartInd
21337(
21338 WDI_ControlBlockType* pWDICtx,
21339 WDI_EventInfoType* pEventData
21340)
21341{
21342 WDI_LowLevelIndType wdiInd;
21343 tNoaStartIndMsg halNoaStartIndMsg;
21344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21345
21346 /*-------------------------------------------------------------------------
21347 Sanity check
21348 -------------------------------------------------------------------------*/
21349 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21350 ( NULL == pEventData->pEventData ))
21351 {
21352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21353 "%s: Invalid parameters", __func__);
21354 WDI_ASSERT( 0 );
21355 return WDI_STATUS_E_FAILURE;
21356 }
21357
21358 /*-------------------------------------------------------------------------
21359 Extract indication and send it to UMAC
21360 -------------------------------------------------------------------------*/
21361 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21362 pEventData->pEventData,
21363 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21364
21365 /*Fill in the indication parameters*/
21366 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21367
21368 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21369 = halNoaStartIndMsg.noaStartIndParams.status;
21370
21371 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21372 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21373
21374 /*Notify UMAC*/
21375 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21376
21377 return WDI_STATUS_SUCCESS;
21378}/*WDI_ProcessNoaAttrInd*/
21379
21380/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021381*@brief Process Noa Attr Indication function (called when
21382 an indication of this kind is being received over the
21383 bus from HAL)
21384
21385 @param pWDICtx: pointer to the WLAN DAL context
21386 pEventData: pointer to the event information structure
21387
21388 @see
21389 @return Result of the function call
21390*/
21391WDI_Status
21392WDI_ProcessP2pNoaAttrInd
21393(
21394 WDI_ControlBlockType* pWDICtx,
21395 WDI_EventInfoType* pEventData
21396)
21397{
21398 WDI_LowLevelIndType wdiInd;
21399 tNoaAttrIndMsg halNoaAttrIndMsg;
21400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21401
21402 /*-------------------------------------------------------------------------
21403 Sanity check
21404 -------------------------------------------------------------------------*/
21405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21406 ( NULL == pEventData->pEventData ))
21407 {
21408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021410 WDI_ASSERT( 0 );
21411 return WDI_STATUS_E_FAILURE;
21412 }
21413
21414 /*-------------------------------------------------------------------------
21415 Extract indication and send it to UMAC
21416 -------------------------------------------------------------------------*/
21417 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21418 pEventData->pEventData,
21419 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21420
21421 /*Fill in the indication parameters*/
21422 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021423
Jeff Johnson295189b2012-06-20 16:38:30 -070021424 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21425 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021426
Jeff Johnson295189b2012-06-20 16:38:30 -070021427 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21428 = halNoaAttrIndMsg.noaAttrIndParams.index;
21429 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21430 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21431 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21432 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021433
Jeff Johnson295189b2012-06-20 16:38:30 -070021434 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21435 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21436 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21437 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21438 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21439 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21440 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21441 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021442
Jeff Johnson295189b2012-06-20 16:38:30 -070021443 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21444 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21445 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21446 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21447 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21448 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21449 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21450 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21451
ltimariub77f24b2013-01-24 18:54:33 -080021452 if ( pWDICtx->wdiLowLevelIndCB )
21453 {
21454 /*Notify UMAC*/
21455 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21456 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021457
21458 return WDI_STATUS_SUCCESS;
21459}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021460
21461/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021462 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021463 an indication of this kind is being received over the
21464 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021465
21466 @param pWDICtx: pointer to the WLAN DAL context
21467 pEventData: pointer to the event information structure
21468
Jeff Johnson295189b2012-06-20 16:38:30 -070021469 @see
21470 @return Result of the function call
21471*/
21472WDI_Status
21473WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021474(
Jeff Johnson295189b2012-06-20 16:38:30 -070021475 WDI_ControlBlockType* pWDICtx,
21476 WDI_EventInfoType* pEventData
21477)
21478{
21479 WDI_LowLevelIndType wdiInd;
21480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021481
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 /*-------------------------------------------------------------------------
21483 Extract indication and send it to UMAC
21484 -------------------------------------------------------------------------*/
21485 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021486 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21487
ltimariub77f24b2013-01-24 18:54:33 -080021488 if ( pWDICtx->wdiLowLevelIndCB )
21489 {
21490 /*Notify UMAC*/
21491 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21492 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021493
Jeff Johnsone7245742012-09-05 17:12:55 -070021494 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021495}/*WDI_ProcessTxPerHitInd*/
21496
Jeff Johnson295189b2012-06-20 16:38:30 -070021497/**
Yue Mab9c86f42013-08-14 15:59:08 -070021498 @brief Process Periodic Tx Pattern Fw Indication function
21499
21500 @param pWDICtx: pointer to the WLAN DAL context
21501 pEventData: pointer to the event information structure
21502
21503 @see
21504 @return Result of the function call
21505*/
21506WDI_Status
21507WDI_ProcessPeriodicTxPtrnFwInd
21508(
21509 WDI_ControlBlockType* pWDICtx,
21510 WDI_EventInfoType* pEventData
21511)
21512{
21513 WDI_LowLevelIndType wdiInd;
21514
21515 /*-------------------------------------------------------------------------
21516 Sanity check
21517 -------------------------------------------------------------------------*/
21518 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21519 (NULL == pEventData->pEventData))
21520 {
21521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21522 "%s: Invalid parameters", __func__);
21523 WDI_ASSERT(0);
21524 return WDI_STATUS_E_FAILURE;
21525 }
21526
21527 /*-------------------------------------------------------------------------
21528 Extract indication and send it to UMAC
21529 -------------------------------------------------------------------------*/
21530 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21531 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21532 sizeof(tHalPeriodicTxPtrnFwInd));
21533
21534 if (pWDICtx->wdiLowLevelIndCB)
21535 {
21536 /*Notify UMAC*/
21537 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21538 }
21539
21540 return WDI_STATUS_SUCCESS;
21541}
21542
21543/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021544 @brief WDI_ProcessFTMCommandReq
21545 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021546
21547 @param pWDICtx: pointer to the WLAN DAL context
21548 pEventData: pointer to the event information structure
21549
Jeff Johnson295189b2012-06-20 16:38:30 -070021550 @see
21551 @return Result of the function call
21552*/
21553WDI_Status
21554WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021555(
Jeff Johnson295189b2012-06-20 16:38:30 -070021556 WDI_ControlBlockType* pWDICtx,
21557 WDI_EventInfoType* pEventData
21558)
21559{
21560 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21561 wpt_uint8 *ftmCommandBuffer = NULL;
21562 wpt_uint16 dataOffset;
21563 wpt_uint16 bufferSize;
21564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021565 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021566 -------------------------------------------------------------------------*/
21567 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21568 ( NULL == pEventData->pEventData))
21569
21570 {
21571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021572 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021575 }
21576
21577 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21578
21579 /* Get MSG Buffer */
21580 WDI_GetMessageBuffer(pWDICtx,
21581 WDI_FTM_CMD_REQ,
21582 ftmCommandReq->bodyLength,
21583 &ftmCommandBuffer,
21584 &dataOffset,
21585 &bufferSize);
21586
21587 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21588 ftmCommandReq->FTMCommandBody,
21589 ftmCommandReq->bodyLength);
21590
21591 /* Send MSG */
21592 return WDI_SendMsg(pWDICtx,
21593 ftmCommandBuffer,
21594 bufferSize,
21595 pEventData->pCBfnc,
21596 pEventData->pUserData,
21597 WDI_FTM_CMD_RESP);
21598}
21599
21600/**
21601 @brief WDI_ProcessFTMCommandRsp
21602 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021603
21604 @param pWDICtx: pointer to the WLAN DAL context
21605 pEventData: pointer to the event information structure
21606
Jeff Johnson295189b2012-06-20 16:38:30 -070021607 @see
21608 @return Result of the function call
21609*/
21610WDI_Status
21611WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021612(
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 WDI_ControlBlockType* pWDICtx,
21614 WDI_EventInfoType* pEventData
21615)
21616{
21617 WDI_FTMCommandRspCb ftmCMDRspCb;
21618 tProcessPttRspParams *ftmCMDRspData = NULL;
21619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21620
21621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021623 -------------------------------------------------------------------------*/
21624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21625 ( NULL == pEventData->pEventData))
21626 {
21627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021631 }
21632
21633 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21634
21635 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21636
Jeff Johnsone7245742012-09-05 17:12:55 -070021637 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21638 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021639 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21640
21641 /*Notify UMAC*/
21642 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21643
Jeff Johnsone7245742012-09-05 17:12:55 -070021644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021645}
Jeff Johnson295189b2012-06-20 16:38:30 -070021646/**
21647 @brief WDI_ProcessHalDumpCmdReq
21648 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021649
21650 @param pWDICtx: pointer to the WLAN DAL context
21651 pEventData: pointer to the event information structure
21652
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 @see
21654 @return Result of the function call
21655*/
21656WDI_Status
21657WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021658(
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 WDI_ControlBlockType* pWDICtx,
21660 WDI_EventInfoType* pEventData
21661)
21662{
21663 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21664 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21665 wpt_uint16 usDataOffset = 0;
21666 wpt_uint16 usSendSize = 0;
21667 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021669
21670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021672 -------------------------------------------------------------------------*/
21673 if (( NULL == pEventData ) ||
21674 ( NULL == pEventData->pEventData) ||
21675 ( NULL == pEventData->pCBfnc ))
21676 {
21677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 }
21682
21683 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21684 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21685
21686 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021687 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021689 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021691 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021696 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021697
Jeff Johnson295189b2012-06-20 16:38:30 -070021698 /*-----------------------------------------------------------------------
21699 Get message buffer
21700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21703 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21706 {
21707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021708 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021712 }
21713
Jeff Johnsone7245742012-09-05 17:12:55 -070021714 wpalMemoryCopy( pSendBuffer+usDataOffset,
21715 &halDumpCmdReqMsg.dumpCmdReqParams,
21716 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021717
21718 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021719 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021720
21721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021722 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021724 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21725 wdiHALDumpCmdRspCb, pEventData->pUserData,
21726 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021727}
21728
21729/**
21730 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021731 Process hal Dump Command Response from HAL, simply route to HDD
21732
21733 @param pWDICtx: pointer to the WLAN DAL context
21734 pEventData: pointer to the event information structure
21735
Jeff Johnson295189b2012-06-20 16:38:30 -070021736 @see
21737 @return Result of the function call
21738*/
21739WDI_Status
21740WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021741(
Jeff Johnson295189b2012-06-20 16:38:30 -070021742 WDI_ControlBlockType* pWDICtx,
21743 WDI_EventInfoType* pEventData
21744)
21745{
21746 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021747 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021748 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21749
21750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021751 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021752 -------------------------------------------------------------------------*/
21753 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21754 ( NULL == pEventData->pEventData))
21755 {
21756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021758 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 }
21761
Jeff Johnsone7245742012-09-05 17:12:55 -070021762 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021763
21764 /*Initialize the WDI Response structure */
21765 wdiHALDumpCmdRsp.usBufferLen = 0;
21766 wdiHALDumpCmdRsp.pBuffer = NULL;
21767
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021768 wpalMemoryCopy( &halDumpCmdRspParams,
21769 pEventData->pEventData,
21770 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021771
21772 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021773 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021774
21775 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021776 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021777 {
21778 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021779 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21780 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21781
21782 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21783 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021784 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021786
Jeff Johnson295189b2012-06-20 16:38:30 -070021787 /*Notify UMAC*/
21788 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21789
21790 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21791 {
21792 /* Free the allocated buffer */
21793 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21794 }
21795 return WDI_STATUS_SUCCESS;
21796}
21797
21798/*==========================================================================
21799 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021800
Jeff Johnson295189b2012-06-20 16:38:30 -070021801 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021803==========================================================================*/
21804/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021805 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021806 when it wishes to send up a notification like the ones
21807 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021808
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021810
21811 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021812 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021813 wctsNotifyCBData: the callback data of the user
21814
Jeff Johnson295189b2012-06-20 16:38:30 -070021815 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021816
21817 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021818*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021819void
Jeff Johnson295189b2012-06-20 16:38:30 -070021820WDI_NotifyMsgCTSCB
21821(
Jeff Johnsone7245742012-09-05 17:12:55 -070021822 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021823 WCTS_NotifyEventType wctsEvent,
21824 void* wctsNotifyCBData
21825)
21826{
Jeff Johnsone7245742012-09-05 17:12:55 -070021827 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21829
21830 if (NULL == pWDICtx )
21831 {
21832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021833 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021835 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 }
21837
21838 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21839 {
21840 /* callback presumably occurred after close */
21841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021842 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021843 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021844 }
21845
21846 if ( WCTS_EVENT_OPEN == wctsEvent )
21847 {
21848 /*Flag must be set atomically as it is checked from incoming request
21849 functions*/
21850 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021851 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021852
21853 /*Nothing to do - so try to dequeue any pending request that may have
21854 occurred while we were trying to establish this*/
21855 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021856 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021858 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021859 {
21860 /*Flag must be set atomically as it is checked from incoming request
21861 functions*/
21862 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021863 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021864
21865 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021866 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021867 wpalMutexRelease(&pWDICtx->wptMutex);
21868
21869 /*Notify that the Control Channel is closed */
21870 wpalEventSet(&pWDICtx->wctsActionEvent);
21871 }
21872
21873}/*WDI_NotifyMsgCTSCB*/
21874
21875
21876/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021877 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021878 when it wishes to send up a packet received over the
21879 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021880
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021882
21883 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021884 pMsg: the packet
21885 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021886 wctsRxMsgCBData: the callback data of the user
21887
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021889
21890 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021891*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021892void
21893WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021894(
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021896 void* pMsg,
21897 wpt_uint32 uLen,
21898 void* wctsRxMsgCBData
21899)
21900{
Jeff Johnsone7245742012-09-05 17:12:55 -070021901 tHalMsgHeader *pHalMsgHeader;
21902 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21905
21906 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021907 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021908 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021909 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021910 ( uLen < sizeof(tHalMsgHeader)))
21911 {
21912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021913 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021915 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 }
21917
21918 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21919 {
21920 /* callback presumably occurred after close */
21921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021922 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021923 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021924 }
21925
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021927 context - so no serialization is necessary here
21928 ! - revisit this assumption */
21929
21930 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21931
21932 if ( uLen != pHalMsgHeader->msgLen )
21933 {
21934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21935 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021936 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021937 wpalWlanReload();
21938
Jeff Johnsone7245742012-09-05 17:12:55 -070021939 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021940 }
21941
21942 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21943
21944 /*The message itself starts after the header*/
21945 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21946 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21947 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21948 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21949
21950
21951 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21952 {
21953 /*Stop the timer as the response was received */
21954 /*!UT - check for potential race conditions between stop and response */
21955 wpalTimerStop(&pWDICtx->wptResponseTimer);
21956 }
21957 /* Check if we receive a response message which is not expected */
21958 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21959 {
21960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21961 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21962 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021963 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021964 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21965 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021966
21967 if (gWDICb.bEnableSSR == false)
21968 {
21969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21970 "SSR is not enabled on WDI timeout");
21971 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21972 return;
21973 }
21974 wpalWcnssResetIntr();
21975 /* if this timer fires, it means Riva did not receive the FIQ */
21976 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21977
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 return;
21979 }
21980
21981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21982 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21983
21984 /*Post response event to the state machine*/
21985 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21986
21987}/*WDI_RXMsgCTSCB*/
21988
21989
21990/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021991 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021992========================================================================*/
21993
21994/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021995 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021997
Jeff Johnson295189b2012-06-20 16:38:30 -070021998 @param pWDICtx - pointer to the control block
21999
22000 @return Result of the function call
22001*/
22002WPT_INLINE WDI_Status
22003WDI_CleanCB
22004(
22005 WDI_ControlBlockType* pWDICtx
22006)
22007{
22008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22009
22010 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022012
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022014 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22015 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22016
22017 WDI_ResetAssocSessions( pWDICtx );
22018
22019 return WDI_STATUS_SUCCESS;
22020}/*WDI_CleanCB*/
22021
22022
22023/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022024 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022025
Jeff Johnsone7245742012-09-05 17:12:55 -070022026
22027 @param pWDICtx: pointer to the WLAN DAL context
22028 pEventData: pointer to the event information structure
22029
Jeff Johnson295189b2012-06-20 16:38:30 -070022030 @see
22031 @return Result of the function call
22032*/
22033WPT_INLINE WDI_Status
22034WDI_ProcessRequest
22035(
22036 WDI_ControlBlockType* pWDICtx,
22037 WDI_EventInfoType* pEventData
22038)
22039{
22040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22041
Jeff Johnsone7245742012-09-05 17:12:55 -070022042 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 already checked these pointers*/
22044
22045 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22046 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022047 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022049 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022050 WDI_getReqMsgString(pEventData->wdiRequest),
22051 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22052 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22053 }
22054 else
22055 {
22056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022057 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022058 pEventData->wdiRequest);
22059 return WDI_STATUS_E_NOT_IMPLEMENT;
22060 }
22061}/*WDI_ProcessRequest*/
22062
22063
22064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022065 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 prefixes it with a send message header
22068
22069 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022070 wdiReqType: type of the request being sent
22071 uBufferLen: message buffer len
22072 pMsgBuffer: resulting allocated buffer
22073 pusDataOffset: offset in the buffer where the caller
22074 can start copying its message data
22075 puBufferSize: the resulting buffer size (offset+buff
22076 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022077
Jeff Johnson295189b2012-06-20 16:38:30 -070022078 @see
22079 @return Result of the function call
22080*/
22081WDI_Status
22082WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022083(
22084 WDI_ControlBlockType* pWDICtx,
22085 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022086 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022087 wpt_uint8** pMsgBuffer,
22088 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022089 wpt_uint16* pusBufferSize
22090)
22091{
22092 tHalMsgHeader halMsgHeader;
22093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22094
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022096 again*/
22097
22098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022099 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022100 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022101 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22103 if ( NULL == *pMsgBuffer )
22104 {
22105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22106 "Unable to allocate message buffer for req %s (%d)",
22107 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022111 }
22112
22113 /*-------------------------------------------------------------------------
22114 Fill in the message header
22115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22117 /* Fill msgVersion */
22118#ifdef WLAN_FEATURE_11AC
22119 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022120 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 else
22122#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022123 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022124
Jeff Johnsone7245742012-09-05 17:12:55 -070022125 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22126 *pusDataOffset = sizeof(halMsgHeader);
22127 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22128
22129 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022130}/*WDI_GetMessageBuffer*/
22131
22132
22133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022136 the CB
22137
22138 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022140
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 usSendSize size of the buffer to be sent
22142 pRspCb: response callback - save in the WDI
22143 CB
22144 pUserData: user data associated with the
22145 callback
22146 wdiExpectedResponse: the code of the response that is
22147 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022148
Jeff Johnson295189b2012-06-20 16:38:30 -070022149 @see
22150 @return Result of the function call
22151*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022152WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022153WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022154(
22155 WDI_ControlBlockType* pWDICtx,
22156 wpt_uint8* pSendBuffer,
22157 wpt_uint32 usSendSize,
22158 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 void* pUserData,
22160 WDI_ResponseEnumType wdiExpectedResponse
22161)
22162{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022163 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022164 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22166
22167 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022168 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022169 ------------------------------------------------------------------------*/
22170 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022171 pWDICtx->pfncRspCB = pRspCb;
22172 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022173
22174 /*-----------------------------------------------------------------------
22175 Call the CTS to send this message over - free message afterwards
22176 - notify transport failure
22177 Note: CTS is reponsible for freeing the message buffer.
22178 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022179 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22180 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22181 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022182 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022184 "Failed to send message with expected response %s (%d)"
22185 " over the bus - catastrophic failure",
22186 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22187 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022188
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022189 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22190 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022191 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022192 else
22193 {
22194 /* even when message was placed in CTS deferred Q, we will treat it
22195 success but log this info
22196 */
22197 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22198 {
22199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22200 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22201 "response %s (%d)",
22202 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22203 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022204 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022205 }
22206 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022207
Jeff Johnsond13512a2012-07-17 11:42:19 -070022208 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022209 if ( NULL != pWDICtx->wdiReqStatusCB )
22210 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022211 /*Inform originator whether request went through or not*/
22212 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22213 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022214 pWDICtx->wdiReqStatusCB = NULL;
22215 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022216 callback(wdiStatus, callbackContext);
22217
22218 /*For WDI requests which have registered a request callback,
22219 inform the WDA caller of the same via setting the return value
22220 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22221 end up repeating the functonality in the req callback for the
22222 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022223 if (wdiStatus != WDI_STATUS_SUCCESS)
22224 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022225 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022226 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022227 }
22228
Jeff Johnsond13512a2012-07-17 11:42:19 -070022229 if ( wdiStatus == WDI_STATUS_SUCCESS )
22230 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022231 /*Start timer for the expected response */
22232 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022233
22234 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022235 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022236 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022237 }
22238 else
22239 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022240 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022241 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22242 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022243
Jeff Johnsond13512a2012-07-17 11:42:19 -070022244 return wdiStatus;
22245
Jeff Johnson295189b2012-06-20 16:38:30 -070022246}/*WDI_SendMsg*/
22247
22248
22249
22250/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022251 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 the bus using the control transport and saves some info
22253 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022254
22255 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 pSendBuffer: buffer to be sent
22257 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022258
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 @see
22260 @return Result of the function call
22261*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022262WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022263WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022264(
22265 WDI_ControlBlockType* pWDICtx,
22266 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 wpt_uint32 usSendSize
22268)
22269{
22270 wpt_uint32 uStatus ;
22271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22272
22273 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022275 Note: CTS is reponsible for freeing the message buffer.
22276 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022277 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 (void*)pSendBuffer, usSendSize );
22279
22280 /*Inform Upper MAC about the outcome of the request*/
22281 if ( NULL != pWDICtx->wdiReqStatusCB )
22282 {
22283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22284 "Send indication status : %d", uStatus);
22285
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022286 /* even if CTS placed indication into its deferred Q, we treat it
22287 * as success and let CTS drain its queue as per smd interrupt to CTS
22288 */
22289 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 -070022290 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022291 }
22292
22293 /*If sending of the message failed - it is considered catastrophic and
22294 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022295 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22296 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22297
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 {
22299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022300 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022301
22302 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22303 return WDI_STATUS_E_FAILURE;
22304 }
22305
Jeff Johnsone7245742012-09-05 17:12:55 -070022306 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022307}/*WDI_SendIndication*/
22308
22309
22310/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022311 @brief WDI_DetectedDeviceError - called internally by DAL when
22312 it has detected a failure in the device
22313
22314 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 usErrorCode: error code detected by WDI or received
22316 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022317
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022320*/
22321void
22322WDI_DetectedDeviceError
22323(
22324 WDI_ControlBlockType* pWDICtx,
22325 wpt_uint16 usErrorCode
22326)
22327{
22328 WDI_LowLevelIndType wdiInd;
22329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22330
22331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22332 "Device Error detected code: %d - transitioning to stopped state",
22333 usErrorCode);
22334
Katya Nigamf02ad012014-05-05 16:12:49 +053022335 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22336
Jeff Johnson295189b2012-06-20 16:38:30 -070022337 wpalMutexAcquire(&pWDICtx->wptMutex);
22338
22339 WDI_STATableStop(pWDICtx);
22340
22341 WDI_ResetAssocSessions(pWDICtx);
22342
22343 /*Set the expected state transition to stopped - because the device
22344 experienced a failure*/
22345 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22346
22347 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022348 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022349
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022351
22352 /*TO DO: - there should be an attempt to reset the device here*/
22353
22354 wpalMutexRelease(&pWDICtx->wptMutex);
22355
22356 /*------------------------------------------------------------------------
22357 Notify UMAC if a handler is registered
22358 ------------------------------------------------------------------------*/
22359 if (pWDICtx->wdiLowLevelIndCB)
22360 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022361 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22362 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022363
22364 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22365 }
22366}/*WDI_DetectedDeviceError*/
22367
22368/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022369 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 we started on send message has expire - this should
22371 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022372 reply - trigger catastrophic failure
22373 @param
22374
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022376
22377 @see
22378 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022379*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022380void
Jeff Johnson295189b2012-06-20 16:38:30 -070022381WDI_ResponseTimerCB
22382(
22383 void *pUserData
22384)
22385{
22386 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22388
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022389 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022390 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 }
22396
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022397 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022398 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022399 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022400
22401 /* If response timer is running at this time that means this timer
22402 * event is not for the last request but rather last-to-last request and
22403 * this timer event has come after we recevied respone for last-to-last
22404 * message
22405 */
22406 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22407 {
22408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22409 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022410 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022411 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22413 "uArchTimeStampTmrStart: %llu seconds, "
22414 "uArchTimeStampTmrExp: %llu seconds",
22415 pWDICtx->uArchTimeStampRspTmrStart,
22416 pWDICtx->uArchTimeStampRspTmrExp);
22417
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022418 return;
22419 }
22420
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022421 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 {
22423
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022426 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022427 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022428 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22429 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22431 "uArchTimeStampTmrStart: %llu seconds, "
22432 "uArchTimeStampTmrExp: %llu seconds",
22433 pWDICtx->uArchTimeStampRspTmrStart,
22434 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022435
22436 /* WDI timeout means Riva is not responding or SMD communication to Riva
22437 * is not happening. The only possible way to recover from this error
22438 * is to initiate SSR from APPS.
22439 * There is also an option to re-enable wifi, which will eventually
22440 * trigger SSR
22441 */
22442 if (gWDICb.bEnableSSR == false)
22443 {
22444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22445 "SSR is not enabled on WDI timeout");
22446 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22447 return;
22448 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022449#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022450 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022451 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022452 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022453 if(wpalIsSsrPanicOnFailure())
22454 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022455 } else {
22456 /* if this timer fires, it means Riva did not receive the FIQ */
22457 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022458 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022459#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022460 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22461 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022462#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022463 }
22464 else
22465 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022467 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022468 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022469 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22470 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22472 "uArchTimeStampTmrStart: %llu seconds, "
22473 "uArchTimeStampTmrExp: %llu seconds",
22474 pWDICtx->uArchTimeStampRspTmrStart,
22475 pWDICtx->uArchTimeStampRspTmrExp);
22476
Jeff Johnson295189b2012-06-20 16:38:30 -070022477 }
22478
22479 return;
22480
22481}/*WDI_ResponseTimerCB*/
22482
22483
22484/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022486
Jeff Johnsone7245742012-09-05 17:12:55 -070022487
22488 @param pWDICtx: pointer to the WLAN DAL context
22489 pEventData: pointer to the event information structure
22490
Jeff Johnson295189b2012-06-20 16:38:30 -070022491 @see
22492 @return Result of the function call
22493*/
22494WPT_INLINE WDI_Status
22495WDI_ProcessResponse
22496(
22497 WDI_ControlBlockType* pWDICtx,
22498 WDI_EventInfoType* pEventData
22499)
22500{
22501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22502
Jeff Johnsone7245742012-09-05 17:12:55 -070022503 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 already checked these pointers
22505 ! - revisit this assumption */
22506 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22507 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022508 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022510 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022511 WDI_getRespMsgString(pEventData->wdiResponse),
22512 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22513 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22514 }
22515 else
22516 {
22517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022518 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022519 pEventData->wdiResponse);
22520 return WDI_STATUS_E_NOT_IMPLEMENT;
22521 }
22522}/*WDI_ProcessResponse*/
22523
22524
22525/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022527=========================================================================*/
22528
22529/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022530 @brief Utility function used by the DAL Core to help queue a
22531 request that cannot be processed right away.
22532 @param
22533
Jeff Johnson295189b2012-06-20 16:38:30 -070022534 pWDICtx: - pointer to the WDI control block
22535 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022536 queued
22537
22538 @see
22539 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022540*/
22541WDI_Status
22542WDI_QueuePendingReq
22543(
22544 WDI_ControlBlockType* pWDICtx,
22545 WDI_EventInfoType* pEventData
22546)
22547{
Jeff Johnsone7245742012-09-05 17:12:55 -070022548 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022549 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022550 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22552
22553 if ( NULL == pEventDataQueue )
22554 {
22555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022556 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 WDI_ASSERT(0);
22558 return WDI_STATUS_MEM_FAILURE;
22559 }
22560
22561 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22562 pEventDataQueue->pUserData = pEventData->pUserData;
22563 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22564 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022565 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022566
22567 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22568 {
22569 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022570
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 if ( NULL == pEventInfo )
22572 {
22573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022574 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022575 WDI_ASSERT(0);
22576 wpalMemoryFree(pEventDataQueue);
22577 return WDI_STATUS_MEM_FAILURE;
22578 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022579
Jeff Johnson295189b2012-06-20 16:38:30 -070022580 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22581
22582 }
22583 pEventDataQueue->pEventData = pEventInfo;
22584
22585 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022586 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022587
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022588 if (eWLAN_PAL_STATUS_E_FAILURE ==
22589 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22590 {
22591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22592 "pEventDataQueue wpal_list_insert_back failed");
22593 WDI_ASSERT(0);
22594 wpalMemoryFree(pEventDataQueue);
22595 wpalMemoryFree(pEventInfo);
22596 return WDI_STATUS_MEM_FAILURE;
22597 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022598
22599 return WDI_STATUS_SUCCESS;
22600}/*WDI_QueuePendingReq*/
22601
22602/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022603 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022605 @param
22606
22607 pMsg - pointer to the message
22608
22609 @see
22610 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022611*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022612void
Jeff Johnson295189b2012-06-20 16:38:30 -070022613WDI_PALCtrlMsgCB
22614(
22615 wpt_msg *pMsg
22616)
22617{
22618 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 WDI_ControlBlockType* pWDICtx = NULL;
22620 WDI_Status wdiStatus;
22621 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022622 void* pUserData;
22623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22624
22625 if (( NULL == pMsg )||
22626 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22627 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22628 {
22629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 }
22634
22635 /*Transition back to the state that we had before serialization
22636 - serialization transitions us to BUSY to stop any incomming requests
22637 ! TO DO L: possible race condition here if a request comes in between the
22638 state transition and the post function*/
22639
Jeff Johnsone7245742012-09-05 17:12:55 -070022640 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022641
22642 /*-----------------------------------------------------------------------
22643 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022644 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022645 -----------------------------------------------------------------------*/
22646 switch ( pEventData->wdiRequest )
22647 {
22648
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22651 break;
22652
Jeff Johnson295189b2012-06-20 16:38:30 -070022653 case WDI_NV_DOWNLOAD_REQ:
22654 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22655 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22656 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22657 {
22658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022659 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22661 }
22662 else
22663 {
22664 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22665 }
22666
22667 break;
22668
22669 default:
22670 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22671 break;
22672 }/*switch ( pEventData->wdiRequest )*/
22673
22674 if ( WDI_STATUS_SUCCESS != wdiStatus )
22675 {
22676 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22677
22678 if ( NULL != pfnReqStatusCB )
22679 {
22680 /*Fail the request*/
22681 pfnReqStatusCB( wdiStatus, pUserData);
22682 }
22683 }
22684
22685 /* Free data - that was allocated when queueing*/
22686 if( pEventData != NULL )
22687 {
22688 if( pEventData->pEventData != NULL )
22689 {
22690 wpalMemoryFree(pEventData->pEventData);
22691 }
22692 wpalMemoryFree(pEventData);
22693 }
22694
22695 if( pMsg != NULL )
22696 {
22697 wpalMemoryFree(pMsg);
22698 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022699
Jeff Johnson295189b2012-06-20 16:38:30 -070022700}/*WDI_PALCtrlMsgCB*/
22701
22702/**
22703 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022704 and schedule for execution a pending request
22705 @param
22706
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 pWDICtx: - pointer to the WDI control block
22708 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022709 queued
22710
22711 @see
22712 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022713*/
22714WDI_Status
22715WDI_DequeuePendingReq
22716(
22717 WDI_ControlBlockType* pWDICtx
22718)
22719{
Jeff Johnsone7245742012-09-05 17:12:55 -070022720 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22724
Jeff Johnsone7245742012-09-05 17:12:55 -070022725 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022726
22727 if ( NULL == pNode )
22728 {
22729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022730 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 return WDI_STATUS_SUCCESS;
22732 }
22733
22734 /*The node actually points to the 1st element inside the Event Data struct -
22735 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737
22738 /*Serialize processing in the control thread
22739 !TO DO: - check to see if these are all the messages params that need
22740 to be filled in*/
22741 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22742
22743 if ( NULL == palMsg )
22744 {
22745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022749 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022750 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 palMsg->callback = WDI_PALCtrlMsgCB;
22752 palMsg->ptr = pEventData;
22753
22754 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022756 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022757
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 /*Transition back to BUSY as we need to handle a queued request*/
22759 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022760
Jeff Johnson295189b2012-06-20 16:38:30 -070022761 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22762
22763 return WDI_STATUS_PENDING;
22764}/*WDI_DequeuePendingReq*/
22765
22766
22767/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022768 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022770 away.- The assoc requests will be queued by BSSID
22771 @param
22772
Jeff Johnson295189b2012-06-20 16:38:30 -070022773 pWDICtx: - pointer to the WDI control block
22774 pEventData: pointer to the evnt info that needs to be queued
22775 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022776
22777 @see
22778 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022779*/
22780WDI_Status
22781WDI_QueueNewAssocRequest
22782(
22783 WDI_ControlBlockType* pWDICtx,
22784 WDI_EventInfoType* pEventData,
22785 wpt_macAddr macBSSID
22786)
22787{
Jeff Johnsone7245742012-09-05 17:12:55 -070022788 wpt_uint8 i;
22789 WDI_BSSSessionType* pSession = NULL;
22790 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022791 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022792 void* pEventInfo;
22793 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022795
Jeff Johnsone7245742012-09-05 17:12:55 -070022796
22797 /*------------------------------------------------------------------------
22798 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022799 ------------------------------------------------------------------------*/
22800 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22801 {
22802 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22803 {
22804 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 pSession = &pWDICtx->aBSSSessions[i];
22806 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 }
22808 }
22809
22810 if ( i >= WDI_MAX_BSS_SESSIONS )
22811 {
22812 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022815
Jeff Johnson295189b2012-06-20 16:38:30 -070022816 /*------------------------------------------------------------------------
22817 Fill in the BSSID for this session and set the usage flag
22818 ------------------------------------------------------------------------*/
22819 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022820 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022821
22822 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022823 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 ------------------------------------------------------------------------*/
22825 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22826 if ( NULL == pEventDataQueue )
22827 {
22828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022829 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022830 WDI_ASSERT(0);
22831 return WDI_STATUS_MEM_FAILURE;
22832 }
22833
22834 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22835 if ( NULL == pSessionIdElement )
22836 {
22837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022838 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 WDI_ASSERT(0);
22840 wpalMemoryFree(pEventDataQueue);
22841 return WDI_STATUS_MEM_FAILURE;
22842 }
22843
22844 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22845 if ( NULL == pEventInfo )
22846 {
22847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022848 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022849 WDI_ASSERT(0);
22850 wpalMemoryFree(pSessionIdElement);
22851 wpalMemoryFree(pEventDataQueue);
22852 return WDI_STATUS_MEM_FAILURE;
22853 }
22854
22855 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22856 pEventDataQueue->pUserData = pEventData->pUserData;
22857 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22858 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022860
22861 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22862 pEventDataQueue->pEventData = pEventInfo;
22863
22864 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022865 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022866
22867 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022868 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022869
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022870 if (eWLAN_PAL_STATUS_E_FAILURE ==
22871 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22872 {
22873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22874 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
22875 WDI_ASSERT(0);
22876 wpalMemoryFree(pSessionIdElement);
22877 wpalMemoryFree(pEventDataQueue);
22878 wpalMemoryFree(pEventInfo);
22879 return WDI_STATUS_MEM_FAILURE;
22880 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022881
22882 /*We need to maintain a separate list that keeps track of the order in which
22883 the new assoc requests are being queued such that we can start processing
22884 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022885 pSessionIdElement->ucIndex = i;
22886 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022887
22888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22889 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022890 if (eWLAN_PAL_STATUS_E_FAILURE ==
22891 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
22892 {
22893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22894 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
22895 WDI_ASSERT(0);
22896 wpalMemoryFree(pSessionIdElement);
22897 wpalMemoryFree(pEventDataQueue);
22898 wpalMemoryFree(pEventInfo);
22899 return WDI_STATUS_MEM_FAILURE;
22900 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022901
22902 /*Return pending as this is what the status of the request is since it has
22903 been queued*/
22904 return WDI_STATUS_PENDING;
22905}/*WDI_QueueNewAssocRequest*/
22906
22907/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022908 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022909 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022910 away.- The assoc requests will be queued by BSSID
22911 @param
22912
Jeff Johnson295189b2012-06-20 16:38:30 -070022913 pWDICtx: - pointer to the WDI control block
22914 pSession: - session in which to queue
22915 pEventData: pointer to the event info that needs to be
22916 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022917
22918 @see
22919 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022920*/
22921WDI_Status
22922WDI_QueueAssocRequest
22923(
22924 WDI_ControlBlockType* pWDICtx,
22925 WDI_BSSSessionType* pSession,
22926 WDI_EventInfoType* pEventData
22927)
22928{
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022931 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022933
22934 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022935 Sanity check
22936 ------------------------------------------------------------------------*/
22937 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22938 {
22939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022940 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022941
Jeff Johnsone7245742012-09-05 17:12:55 -070022942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022943 }
22944
22945 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022946 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022947 ------------------------------------------------------------------------*/
22948 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22949 if ( NULL == pEventDataQueue )
22950 {
22951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022952 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022953 WDI_ASSERT(0);
22954 return WDI_STATUS_MEM_FAILURE;
22955 }
22956
22957 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22958 if ( NULL == pEventInfo )
22959 {
22960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22961 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022962 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022963 WDI_ASSERT(0);
22964 wpalMemoryFree(pEventDataQueue);
22965 return WDI_STATUS_MEM_FAILURE;
22966 }
22967
22968 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22969 pEventDataQueue->pUserData = pEventData->pUserData;
22970 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22971 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022972 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022973 pEventDataQueue->pEventData = pEventInfo;
22974
22975 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22976
22977 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022978 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022979
22980 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022981 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022982
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022983 if (eWLAN_PAL_STATUS_E_FAILURE ==
22984 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22985 {
22986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22987 "%s: Cannot allocate memory for queueing event data info",
22988 __func__);
22989 WDI_ASSERT(0);
22990 wpalMemoryFree(pEventDataQueue);
22991 wpalMemoryFree(pEventInfo);
22992 return WDI_STATUS_MEM_FAILURE;
22993 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022994
22995 /*The result of this operation is pending because the request has been
22996 queued and it will be processed at a later moment in time */
22997 return WDI_STATUS_PENDING;
22998}/*WDI_QueueAssocRequest*/
22999
23000/**
23001 @brief Utility function used by the DAL Core to help dequeue
23002 an association request that was pending
23003 The request will be queued up in front of the main
23004 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 @param
23006
Jeff Johnson295189b2012-06-20 16:38:30 -070023007 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023008
23009
23010 @see
23011 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023012*/
23013WDI_Status
23014WDI_DequeueAssocRequest
23015(
23016 WDI_ControlBlockType* pWDICtx
23017)
23018{
Jeff Johnsone7245742012-09-05 17:12:55 -070023019 wpt_list_node* pNode = NULL;
23020 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023021 WDI_BSSSessionType* pSession;
23022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023023
23024 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023025 Sanity check
23026 ------------------------------------------------------------------------*/
23027 if ( NULL == pWDICtx )
23028 {
23029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023030 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023031
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023033 }
23034
23035 /*------------------------------------------------------------------------
23036 An association has been completed => a new association can occur
23037 Check to see if there are any pending associations ->
23038 If so , transfer all the pending requests into the busy queue for
23039 processing
23040 These requests have arrived prior to the requests in the busy queue
23041 (bc they needed to be processed in order to be placed in this queue)
23042 => they will be placed at the front of the busy queue
23043 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023044 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023045
23046 if ( NULL == pNode )
23047 {
23048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023049 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 return WDI_STATUS_SUCCESS;
23051 }
23052
23053 /*The node actually points to the 1st element inside the Session Id struct -
23054 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023055 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023056
23057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23058 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23059
23060 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23061 {
23062 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023063
Jeff Johnson295189b2012-06-20 16:38:30 -070023064 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023065 the front of the main waiting queue for subsequent execution*/
23066 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 while ( NULL != pNode )
23068 {
23069 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023070 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23071 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023073 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 }
23075 else
23076 {
23077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 WPAL_ASSERT(0);
23080 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023083
Jeff Johnson295189b2012-06-20 16:38:30 -070023084 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23085 wpalMemoryFree(pSessionIdElement);
23086 return WDI_STATUS_SUCCESS;
23087}/*WDI_DequeueAssocRequest*/
23088
23089/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023090 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023091 pending requests - all req cb will be called with
23092 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 @param
23094
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023096
23097 @see
23098 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023099*/
23100WDI_Status
23101WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023102(
Jeff Johnson295189b2012-06-20 16:38:30 -070023103 WDI_ControlBlockType* pWDICtx
23104)
23105{
Jeff Johnsone7245742012-09-05 17:12:55 -070023106 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023107 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023108 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023109 void* pUserData;
23110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23111
Jeff Johnsone7245742012-09-05 17:12:55 -070023112 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023113
23114 /*------------------------------------------------------------------------
23115 Go through all the requests and fail them - this will only be called
23116 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023117 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 ------------------------------------------------------------------------*/
23119 while( pNode )
23120 {
23121 /*The node actually points to the 1st element inside the Event Data struct -
23122 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023123 pEventDataQueue = (WDI_EventInfoType*)pNode;
23124
Jeff Johnson295189b2012-06-20 16:38:30 -070023125 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23126 if ( NULL != pfnReqStatusCB )
23127 {
23128 /*Fail the request*/
23129 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23130 }
23131 /* Free data - that was allocated when queueing */
23132 if ( pEventDataQueue->pEventData != NULL )
23133 {
23134 wpalMemoryFree(pEventDataQueue->pEventData);
23135 }
23136 wpalMemoryFree(pEventDataQueue);
23137
23138 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23139 {
23140 break;
23141 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023142 }
23143
Jeff Johnson295189b2012-06-20 16:38:30 -070023144 return WDI_STATUS_SUCCESS;
23145}/*WDI_ClearPendingRequests*/
23146
23147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023148 @brief Helper routine used to init the BSS Sessions in the WDI control block
23149
23150
23151 @param pWDICtx: pointer to the WLAN DAL context
23152
Jeff Johnson295189b2012-06-20 16:38:30 -070023153 @see
23154*/
23155void
23156WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023157(
Jeff Johnson295189b2012-06-20 16:38:30 -070023158 WDI_ControlBlockType* pWDICtx
23159)
23160{
Jeff Johnsone7245742012-09-05 17:12:55 -070023161 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23163
23164 /*-------------------------------------------------------------------------
23165 No Sanity check
23166 -------------------------------------------------------------------------*/
23167 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23168 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023169 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023170 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23171 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23172 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23173 }
23174}/*WDI_ResetAssocSessions*/
23175
23176/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023177 @brief Helper routine used to find a session based on the BSSID
23178
23179
23180 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023181 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023182 pSession: pointer to the session (if found)
23183
Jeff Johnson295189b2012-06-20 16:38:30 -070023184 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023186*/
23187wpt_uint8
23188WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023189(
Jeff Johnson295189b2012-06-20 16:38:30 -070023190 WDI_ControlBlockType* pWDICtx,
23191 wpt_macAddr macBSSID,
23192 WDI_BSSSessionType** ppSession
23193)
23194{
Jeff Johnsone7245742012-09-05 17:12:55 -070023195 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23197
23198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023200 -------------------------------------------------------------------------*/
23201 if ( NULL == ppSession )
23202 {
23203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023204 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023205 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 }
23207
Jeff Johnsone7245742012-09-05 17:12:55 -070023208 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023209
Jeff Johnsone7245742012-09-05 17:12:55 -070023210 /*------------------------------------------------------------------------
23211 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 ------------------------------------------------------------------------*/
23213 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23214 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023215 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23216 (eWLAN_PAL_TRUE ==
23217 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23218 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023219 {
23220 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023221 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023222 return i;
23223 }
23224 }
23225
Jeff Johnsone7245742012-09-05 17:12:55 -070023226 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023227}/*WDI_FindAssocSession*/
23228
23229/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023230 @brief Helper routine used to find a session based on the BSSID
23231
23232
23233 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 ucBSSIdx: BSS Index of the session
23235 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023236
Jeff Johnson295189b2012-06-20 16:38:30 -070023237 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023238 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023239*/
23240wpt_uint8
23241WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023242(
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 WDI_ControlBlockType* pWDICtx,
23244 wpt_uint16 ucBSSIdx,
23245 WDI_BSSSessionType** ppSession
23246)
23247{
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23250
23251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023253 -------------------------------------------------------------------------*/
23254 if ( NULL == ppSession )
23255 {
23256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023257 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259 }
23260
Jeff Johnsone7245742012-09-05 17:12:55 -070023261 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023262
Jeff Johnsone7245742012-09-05 17:12:55 -070023263 /*------------------------------------------------------------------------
23264 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 ------------------------------------------------------------------------*/
23266 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23267 {
23268 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23269 {
23270 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023271 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 return i;
23273 }
23274 }
23275
Jeff Johnsone7245742012-09-05 17:12:55 -070023276 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023277}/*WDI_FindAssocSessionByBSSIdx*/
23278
23279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 @brief Helper routine used to find a session based on the BSSID
23281
23282
23283 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023284 ucBSSIdx: BSS Index of the session
23285 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023286
Jeff Johnson295189b2012-06-20 16:38:30 -070023287 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023288 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023289*/
23290wpt_uint8
23291WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023292(
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 WDI_ControlBlockType* pWDICtx,
23294 wpt_uint16 usIdx,
23295 WDI_BSSSessionType** ppSession
23296)
23297{
23298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23299
23300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 -------------------------------------------------------------------------*/
23303 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23304 {
23305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023306 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023307 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023308 }
23309
23310 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023311 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023312
23313 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023314
Jeff Johnson295189b2012-06-20 16:38:30 -070023315}/*WDI_FindAssocSessionByBSSIdx*/
23316
23317/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023318 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023319 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023320
23321
23322 @param pWDICtx: pointer to the WLAN DAL context
23323 pSession: pointer to the session (if found)
23324
Jeff Johnson295189b2012-06-20 16:38:30 -070023325 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023327*/
23328wpt_uint8
23329WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023330(
Jeff Johnson295189b2012-06-20 16:38:30 -070023331 WDI_ControlBlockType* pWDICtx,
23332 WDI_BSSSessionType** ppSession
23333)
23334{
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023338 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023339 -------------------------------------------------------------------------*/
23340 if ( NULL == ppSession )
23341 {
23342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023343 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023344 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023345 }
23346
Jeff Johnsone7245742012-09-05 17:12:55 -070023347 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023348
Jeff Johnsone7245742012-09-05 17:12:55 -070023349 /*------------------------------------------------------------------------
23350 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 ------------------------------------------------------------------------*/
23352 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23353 {
23354 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23355 {
23356 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023357 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023358 return i;
23359 }
23360 }
23361
Jeff Johnsone7245742012-09-05 17:12:55 -070023362 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023363}/*WDI_FindEmptySession*/
23364
23365
23366/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023367 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023369
23370
23371 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023372 macBSSID: pointer to BSSID. If NULL, get all the session.
23373 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23374 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23375 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 @see
23377 @return Number of sessions in use
23378*/
23379wpt_uint8
23380WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023381(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023382 WDI_ControlBlockType* pWDICtx,
23383 wpt_macAddr macBSSID,
23384 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023385)
23386{
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023389
23390 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023391 Count all sessions in use
23392 ------------------------------------------------------------------------*/
23393 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23394 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023395 if ( macBSSID && skipBSSID &&
23396 (eWLAN_PAL_TRUE ==
23397 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23398 WDI_MAC_ADDR_LEN)))
23399 {
23400 continue;
23401 }
23402 else if ( pWDICtx->aBSSSessions[i].bInUse )
23403 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023404 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023405 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023406 }
23407
Jeff Johnsone7245742012-09-05 17:12:55 -070023408 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023409}/*WDI_GetActiveSessionsCount*/
23410
23411/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023412 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023413 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023414
23415
23416 @param pWDICtx: pointer to the WLAN DAL context
23417 pSession: pointer to the session (if found)
23418
Jeff Johnson295189b2012-06-20 16:38:30 -070023419 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023420 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023421*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023422void
Jeff Johnson295189b2012-06-20 16:38:30 -070023423WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023424(
Jeff Johnson295189b2012-06-20 16:38:30 -070023425 WDI_ControlBlockType* pWDICtx,
23426 WDI_BSSSessionType* ppSession
23427)
23428{
23429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 -------------------------------------------------------------------------*/
23432 if ( NULL == ppSession )
23433 {
23434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023435 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 }
23438
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 /*------------------------------------------------------------------------
23440 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 ------------------------------------------------------------------------*/
23442 wpal_list_destroy(&ppSession->wptPendingQueue);
23443 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23445 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23447 wpal_list_init(&ppSession->wptPendingQueue);
23448
23449}/*WDI_DeleteSession*/
23450
23451/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023452 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023453 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023454 @param
23455
Jeff Johnson295189b2012-06-20 16:38:30 -070023456 WDI_AddStaParams: - pointer to the WDI Add STA params
23457 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023458
23459 @see
23460 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023461*/
23462void
23463WDI_AddBcastSTAtoSTATable
23464(
23465 WDI_ControlBlockType* pWDICtx,
23466 WDI_AddStaParams * staParams,
23467 wpt_uint16 usBcastStaIdx
23468)
23469{
23470 WDI_AddStaParams wdiAddSTAParam = {0};
23471 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23473
23474 /*---------------------------------------------------------------------
23475 Sanity check
23476 ---------------------------------------------------------------------*/
23477 if ( NULL == staParams )
23478 {
23479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023481
Jeff Johnsone7245742012-09-05 17:12:55 -070023482 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023483 }
23484
23485 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23486 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23487 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23488 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23489 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23490 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23491 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23492 WDI_MAC_ADDR_LEN );
23493 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23494 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23495 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23496 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23497 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23498 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23499 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023500
Jeff Johnson295189b2012-06-20 16:38:30 -070023501 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23502}
23503
23504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023505 @brief NV blob will be divided into fragments of size 4kb and
23506 Sent to HAL
23507
23508 @param pWDICtx: pointer to the WLAN DAL context
23509 pEventData: pointer to the event information structure
23510
Jeff Johnson295189b2012-06-20 16:38:30 -070023511 @see
23512 @return Result of the function call
23513 */
23514
23515WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023516(
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 WDI_ControlBlockType* pWDICtx,
23518 WDI_EventInfoType* pEventData
23519)
23520{
23521
23522 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23523 wpt_uint8* pSendBuffer = NULL;
23524 wpt_uint16 usDataOffset = 0;
23525 wpt_uint16 usSendSize = 0;
23526 wpt_uint16 usCurrentFragmentSize =0;
23527 wpt_uint8* pSrcBuffer = NULL;
23528 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23529 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23530
23531 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23532 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23533 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23534
Jeff Johnsone7245742012-09-05 17:12:55 -070023535 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023536 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23537
23538 /* Update the current Fragment Number */
23539 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23540
23541 /*Update the HAL REQ structure */
23542 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23543 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23544 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23545
23546 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023547 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 image will be sent to HAL*/
23549
Jeff Johnsone7245742012-09-05 17:12:55 -070023550 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023551 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023552 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023553 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023554 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023555 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23556 usCurrentFragmentSize = FRAGMENT_SIZE;
23557
23558 /*Update the HAL REQ structure */
23559 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23560 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23561
23562 }
23563 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023564 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023565 usCurrentFragmentSize = FRAGMENT_SIZE;
23566
23567 /*Update the HAL REQ structure */
23568 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23569 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23570 }
23571
23572 /*-----------------------------------------------------------------------
23573 Get message buffer
23574 -----------------------------------------------------------------------*/
23575 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23576 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23577 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023578 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23580 {
23581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023582 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023583 pEventData, pwdiNvDownloadReqParams);
23584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023586 }
23587
23588 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023589 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023590 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23591
23592 /* Appending the NV image fragment */
23593 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23594 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23595 usCurrentFragmentSize);
23596
23597 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023599
Jeff Johnsone7245742012-09-05 17:12:55 -070023600 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23601 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023602 WDI_NV_DOWNLOAD_RESP);
23603
23604}
Jeff Johnsone7245742012-09-05 17:12:55 -070023605/*============================================================================
23606 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 ============================================================================*/
23608/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023609 @brief Helper routine used to find a session based on the BSSID
23610 @param pContext: pointer to the WLAN DAL context
23611 @param pDPContext: pointer to the Datapath context
23612
Jeff Johnson295189b2012-06-20 16:38:30 -070023613 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023614 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023615*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023616WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023617WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23618{
23619 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23620
23621 pCB->pDPContext = pDPContext;
23622 return;
23623}
23624
23625/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023626 @brief Helper routine used to find a session based on the BSSID
23627
23628
23629 @param pContext: pointer to the WLAN DAL context
23630
Jeff Johnson295189b2012-06-20 16:38:30 -070023631 @see
23632 @return pointer to Datapath context
23633*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023634WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023635WDI_DS_GetDatapathContext (void *pContext)
23636{
23637 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23638 return pCB->pDPContext;
23639}
23640/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023641 @brief Helper routine used to find a session based on the BSSID
23642
23643
23644 @param pContext: pointer to the WLAN DAL context
23645 @param pDTDriverContext: pointer to the Transport Driver context
23646
Jeff Johnson295189b2012-06-20 16:38:30 -070023647 @see
23648 @return void
23649*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023650WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023651WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23652{
23653 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23654
23655 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023656 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023657}
23658
23659/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023660 @brief Helper routine used to find a session based on the BSSID
23661
23662
23663 @param pWDICtx: pointer to the WLAN DAL context
23664
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023666 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023667*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023668WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023669WDT_GetTransportDriverContext (void *pContext)
23670{
23671 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023672 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023673}
23674
Jeff Johnsone7245742012-09-05 17:12:55 -070023675/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023676 Helper inline converters
23677 ============================================================================*/
23678/*Convert WDI driver type into HAL driver type*/
23679WPT_STATIC WPT_INLINE WDI_Status
23680WDI_HAL_2_WDI_STATUS
23681(
23682 eHalStatus halStatus
23683)
23684{
Jeff Johnsone7245742012-09-05 17:12:55 -070023685 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023686 the chances of getting inlined*/
23687 switch( halStatus )
23688 {
23689 case eHAL_STATUS_SUCCESS:
23690 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23691 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23692 return WDI_STATUS_SUCCESS;
23693 case eHAL_STATUS_FAILURE:
23694 return WDI_STATUS_E_FAILURE;
23695 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023696 return WDI_STATUS_MEM_FAILURE;
23697 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023698 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023699 default:
23700 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23701 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023702
Jeff Johnsone7245742012-09-05 17:12:55 -070023703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023704}/*WDI_HAL_2_WDI_STATUS*/
23705
23706/*Convert WDI request type into HAL request type*/
23707WPT_STATIC WPT_INLINE tHalHostMsgType
23708WDI_2_HAL_REQ_TYPE
23709(
23710 WDI_RequestEnumType wdiReqType
23711)
23712{
Jeff Johnsone7245742012-09-05 17:12:55 -070023713 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023714 the chances of getting inlined*/
23715 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023716 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023718 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023719 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023720 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023722 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023723 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023724 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023725 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023726 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023728 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023730 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023734 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023735 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023736 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023737 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023738 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023739 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023740 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023741 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023742 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023743 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023744 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023745 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023746 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023748 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023749 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023750 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023751 return WLAN_HAL_RMV_STAKEY_REQ;
23752 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023753 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023755 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 case WDI_DEL_BA_REQ:
23761 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023762#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023763 case WDI_TSM_STATS_REQ:
23764 return WLAN_HAL_TSM_STATS_REQ;
23765#endif
23766 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023767 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023768 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023769 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023770 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023771 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023772 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023773 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023774 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023775 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 case WDI_ADD_BA_SESSION_REQ:
23777 return WLAN_HAL_ADD_BA_SESSION_REQ;
23778 case WDI_TRIGGER_BA_REQ:
23779 return WLAN_HAL_TRIGGER_BA_REQ;
23780 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023781 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023782 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023783 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023784 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23785 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23786 case WDI_SET_MAX_TX_POWER_REQ:
23787 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023788 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23789 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023790 case WDI_SET_TX_POWER_REQ:
23791 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23793 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023794#ifdef FEATURE_WLAN_TDLS
23795 case WDI_TDLS_LINK_ESTABLISH_REQ:
23796 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053023797 case WDI_TDLS_CHAN_SWITCH_REQ:
23798 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023799#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023801 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023802 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023803 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023805 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023806 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023807 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023808 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023809 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023810 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023811 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023812 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023813 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023816 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023817 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023818 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023819 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023820 case WDI_REM_BEACON_FILTER_REQ:
23821 return WLAN_HAL_REM_BCN_FILTER_REQ;
23822 case WDI_SET_RSSI_THRESHOLDS_REQ:
23823 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23824 case WDI_HOST_OFFLOAD_REQ:
23825 return WLAN_HAL_HOST_OFFLOAD_REQ;
23826 case WDI_WOWL_ADD_BC_PTRN_REQ:
23827 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23828 case WDI_WOWL_DEL_BC_PTRN_REQ:
23829 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23830 case WDI_WOWL_ENTER_REQ:
23831 return WLAN_HAL_ENTER_WOWL_REQ;
23832 case WDI_WOWL_EXIT_REQ:
23833 return WLAN_HAL_EXIT_WOWL_REQ;
23834 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23835 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23836 case WDI_NV_DOWNLOAD_REQ:
23837 return WLAN_HAL_DOWNLOAD_NV_REQ;
23838 case WDI_FLUSH_AC_REQ:
23839 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23840 case WDI_BTAMP_EVENT_REQ:
23841 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23842#ifdef WLAN_FEATURE_VOWIFI_11R
23843 case WDI_AGGR_ADD_TS_REQ:
23844 return WLAN_HAL_AGGR_ADD_TS_REQ;
23845#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023846 case WDI_FTM_CMD_REQ:
23847 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 case WDI_ADD_STA_SELF_REQ:
23849 return WLAN_HAL_ADD_STA_SELF_REQ;
23850 case WDI_DEL_STA_SELF_REQ:
23851 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023852#ifdef FEATURE_OEM_DATA_SUPPORT
23853 case WDI_START_OEM_DATA_REQ:
23854 return WLAN_HAL_START_OEM_DATA_REQ;
23855#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 case WDI_HOST_RESUME_REQ:
23857 return WLAN_HAL_HOST_RESUME_REQ;
23858 case WDI_HOST_SUSPEND_IND:
23859 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023860 case WDI_TRAFFIC_STATS_IND:
23861 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023862#ifdef WLAN_FEATURE_11W
23863 case WDI_EXCLUDE_UNENCRYPTED_IND:
23864 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23865#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023866 case WDI_KEEP_ALIVE_REQ:
23867 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023868#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023869 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23870 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023871#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023872#ifdef FEATURE_WLAN_SCAN_PNO
23873 case WDI_SET_PREF_NETWORK_REQ:
23874 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23875 case WDI_SET_RSSI_FILTER_REQ:
23876 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23877 case WDI_UPDATE_SCAN_PARAMS_REQ:
23878 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23879#endif // FEATURE_WLAN_SCAN_PNO
23880 case WDI_SET_TX_PER_TRACKING_REQ:
23881 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23882#ifdef WLAN_FEATURE_PACKET_FILTERING
23883 case WDI_8023_MULTICAST_LIST_REQ:
23884 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23885 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23888 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23889 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23890 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23891#endif // WLAN_FEATURE_PACKET_FILTERING
23892 case WDI_HAL_DUMP_CMD_REQ:
23893 return WLAN_HAL_DUMP_COMMAND_REQ;
23894#ifdef WLAN_FEATURE_GTK_OFFLOAD
23895 case WDI_GTK_OFFLOAD_REQ:
23896 return WLAN_HAL_GTK_OFFLOAD_REQ;
23897 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23898 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23899#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23900
23901 case WDI_INIT_SCAN_CON_REQ:
23902 return WLAN_HAL_INIT_SCAN_CON_REQ;
23903 case WDI_SET_POWER_PARAMS_REQ:
23904 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23905 case WDI_SET_TM_LEVEL_REQ:
23906 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23907 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23908 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023909#ifdef WLAN_FEATURE_11AC
23910 case WDI_UPDATE_VHT_OP_MODE_REQ:
23911 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23912#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023913 case WDI_GET_ROAM_RSSI_REQ:
23914 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023915 case WDI_DHCP_START_IND:
23916 return WLAN_HAL_DHCP_START_IND;
23917 case WDI_DHCP_STOP_IND:
23918 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023919#ifdef FEATURE_WLAN_LPHB
23920 case WDI_LPHB_CFG_REQ:
23921 return WLAN_HAL_LPHB_CFG_REQ;
23922#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023923 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23924 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23925 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23926 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23927
Rajeev79dbe4c2013-10-05 11:03:42 +053023928#ifdef FEATURE_WLAN_BATCH_SCAN
23929 case WDI_SET_BATCH_SCAN_REQ:
23930 return WLAN_HAL_BATCHSCAN_SET_REQ;
23931 case WDI_STOP_BATCH_SCAN_IND:
23932 return WLAN_HAL_BATCHSCAN_STOP_IND;
23933 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23934 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23935#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023936 case WDI_RATE_UPDATE_IND:
23937 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023938 case WDI_START_HT40_OBSS_SCAN_IND:
23939 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23940 case WDI_STOP_HT40_OBSS_SCAN_IND:
23941 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023942 case WDI_UPDATE_CHAN_REQ:
23943 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023944 case WDI_CH_SWITCH_REQ_V1:
23945 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023946 case WDI_GET_BCN_MISS_RATE_REQ:
23947 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023948
23949#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23950 case WDI_LL_STATS_SET_REQ:
23951 return WLAN_HAL_LL_SET_STATS_REQ;
23952 case WDI_LL_STATS_GET_REQ:
23953 return WLAN_HAL_LL_GET_STATS_REQ;
23954 case WDI_LL_STATS_CLEAR_REQ:
23955 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23956#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023957#ifdef WLAN_FEATURE_EXTSCAN
23958 case WDI_EXTSCAN_START_REQ:
23959 return WLAN_HAL_EXT_SCAN_START_REQ;
23960 case WDI_EXTSCAN_STOP_REQ:
23961 return WLAN_HAL_EXT_SCAN_STOP_REQ;
23962 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
23963 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
23964 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
23965 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
23966 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
23967 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
23968 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
23969 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
23970 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
23971 return WLAN_HAL_SIG_RSSI_SET_REQ;
23972 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
23973 return WLAN_HAL_SIG_RSSI_RESET_REQ;
23974#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053023975 case WDI_SPOOF_MAC_ADDR_REQ:
23976 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053023977 case WDI_GET_FW_STATS_REQ:
23978 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053023979 case WDI_ENCRYPT_MSG_REQ:
23980 return WLAN_HAL_ENCRYPT_DATA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023982 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023984
Jeff Johnson295189b2012-06-20 16:38:30 -070023985}/*WDI_2_HAL_REQ_TYPE*/
23986
23987/*Convert WDI response type into HAL response type*/
23988WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23989HAL_2_WDI_RSP_TYPE
23990(
23991 tHalHostMsgType halMsg
23992)
23993{
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 the chances of getting inlined*/
23996 switch( halMsg )
23997 {
23998 case WLAN_HAL_START_RSP:
23999 return WDI_START_RESP;
24000 case WLAN_HAL_STOP_RSP:
24001 return WDI_STOP_RESP;
24002 case WLAN_HAL_INIT_SCAN_RSP:
24003 return WDI_INIT_SCAN_RESP;
24004 case WLAN_HAL_START_SCAN_RSP:
24005 return WDI_START_SCAN_RESP;
24006 case WLAN_HAL_END_SCAN_RSP:
24007 return WDI_END_SCAN_RESP;
24008 case WLAN_HAL_FINISH_SCAN_RSP:
24009 return WDI_FINISH_SCAN_RESP;
24010 case WLAN_HAL_CONFIG_STA_RSP:
24011 return WDI_CONFIG_STA_RESP;
24012 case WLAN_HAL_DELETE_STA_RSP:
24013 return WDI_DEL_STA_RESP;
24014 case WLAN_HAL_CONFIG_BSS_RSP:
24015 return WDI_CONFIG_BSS_RESP;
24016 case WLAN_HAL_DELETE_BSS_RSP:
24017 return WDI_DEL_BSS_RESP;
24018 case WLAN_HAL_JOIN_RSP:
24019 return WDI_JOIN_RESP;
24020 case WLAN_HAL_POST_ASSOC_RSP:
24021 return WDI_POST_ASSOC_RESP;
24022 case WLAN_HAL_SET_BSSKEY_RSP:
24023 return WDI_SET_BSS_KEY_RESP;
24024 case WLAN_HAL_SET_STAKEY_RSP:
24025 return WDI_SET_STA_KEY_RESP;
24026 case WLAN_HAL_RMV_BSSKEY_RSP:
24027 return WDI_RMV_BSS_KEY_RESP;
24028 case WLAN_HAL_RMV_STAKEY_RSP:
24029 return WDI_RMV_STA_KEY_RESP;
24030 case WLAN_HAL_SET_BCASTKEY_RSP:
24031 return WDI_SET_STA_BCAST_KEY_RESP;
24032 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24033 // return WDI_RMV_STA_BCAST_KEY_RESP;
24034 case WLAN_HAL_ADD_TS_RSP:
24035 return WDI_ADD_TS_RESP;
24036 case WLAN_HAL_DEL_TS_RSP:
24037 return WDI_DEL_TS_RESP;
24038 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24039 return WDI_UPD_EDCA_PRMS_RESP;
24040 case WLAN_HAL_ADD_BA_RSP:
24041 return WDI_ADD_BA_RESP;
24042 case WLAN_HAL_DEL_BA_RSP:
24043 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024044#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024045 case WLAN_HAL_TSM_STATS_RSP:
24046 return WDI_TSM_STATS_RESP;
24047#endif
24048 case WLAN_HAL_CH_SWITCH_RSP:
24049 return WDI_CH_SWITCH_RESP;
24050 case WLAN_HAL_SET_LINK_ST_RSP:
24051 return WDI_SET_LINK_ST_RESP;
24052 case WLAN_HAL_GET_STATS_RSP:
24053 return WDI_GET_STATS_RESP;
24054 case WLAN_HAL_UPDATE_CFG_RSP:
24055 return WDI_UPDATE_CFG_RESP;
24056 case WLAN_HAL_ADD_BA_SESSION_RSP:
24057 return WDI_ADD_BA_SESSION_RESP;
24058 case WLAN_HAL_TRIGGER_BA_RSP:
24059 return WDI_TRIGGER_BA_RESP;
24060 case WLAN_HAL_UPDATE_BEACON_RSP:
24061 return WDI_UPD_BCON_PRMS_RESP;
24062 case WLAN_HAL_SEND_BEACON_RSP:
24063 return WDI_SND_BCON_RESP;
24064 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24065 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24066 /*Indications*/
24067 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24068 return WDI_HAL_RSSI_NOTIFICATION_IND;
24069 case WLAN_HAL_MISSED_BEACON_IND:
24070 return WDI_HAL_MISSED_BEACON_IND;
24071 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24072 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24073 case WLAN_HAL_MIC_FAILURE_IND:
24074 return WDI_HAL_MIC_FAILURE_IND;
24075 case WLAN_HAL_FATAL_ERROR_IND:
24076 return WDI_HAL_FATAL_ERROR_IND;
24077 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24078 return WDI_HAL_DEL_STA_IND;
24079 case WLAN_HAL_COEX_IND:
24080 return WDI_HAL_COEX_IND;
24081 case WLAN_HAL_OTA_TX_COMPL_IND:
24082 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 case WLAN_HAL_P2P_NOA_ATTR_IND:
24084 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024085 case WLAN_HAL_P2P_NOA_START_IND:
24086 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024087 case WLAN_HAL_DEL_BA_IND:
24088 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024089 case WLAN_HAL_TX_PER_HIT_IND:
24090 return WDI_HAL_TX_PER_HIT_IND;
24091 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24092 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024093 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24094 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024095 case WLAN_HAL_SET_TX_POWER_RSP:
24096 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024097 case WLAN_HAL_SET_P2P_GONOA_RSP:
24098 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024099#ifdef FEATURE_WLAN_TDLS
24100 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24101 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024102 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24103 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024104 case WLAN_HAL_TDLS_IND:
24105 return WDI_HAL_TDLS_IND;
24106#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024108 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024110 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024111 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024112 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024113 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024114 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024115 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024116 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024117 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024118 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024120 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024121 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024122 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024124 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024125 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24126 return WDI_SET_BEACON_FILTER_RESP;
24127 case WLAN_HAL_REM_BCN_FILTER_RSP:
24128 return WDI_REM_BEACON_FILTER_RESP;
24129 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24130 return WDI_SET_RSSI_THRESHOLDS_RESP;
24131 case WLAN_HAL_HOST_OFFLOAD_RSP:
24132 return WDI_HOST_OFFLOAD_RESP;
24133 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24134 return WDI_WOWL_ADD_BC_PTRN_RESP;
24135 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24136 return WDI_WOWL_DEL_BC_PTRN_RESP;
24137 case WLAN_HAL_ENTER_WOWL_RSP:
24138 return WDI_WOWL_ENTER_RESP;
24139 case WLAN_HAL_EXIT_WOWL_RSP:
24140 return WDI_WOWL_EXIT_RESP;
24141 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24142 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24143 case WLAN_HAL_DOWNLOAD_NV_RSP:
24144 return WDI_NV_DOWNLOAD_RESP;
24145 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24146 return WDI_FLUSH_AC_RESP;
24147 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24148 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 case WLAN_HAL_PROCESS_PTT_RSP:
24150 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024151 case WLAN_HAL_ADD_STA_SELF_RSP:
24152 return WDI_ADD_STA_SELF_RESP;
24153case WLAN_HAL_DEL_STA_SELF_RSP:
24154 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024155#ifdef FEATURE_OEM_DATA_SUPPORT
24156 case WLAN_HAL_START_OEM_DATA_RSP:
24157 return WDI_START_OEM_DATA_RESP;
24158#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024159 case WLAN_HAL_HOST_RESUME_RSP:
24160 return WDI_HOST_RESUME_RESP;
24161 case WLAN_HAL_KEEP_ALIVE_RSP:
24162 return WDI_KEEP_ALIVE_RESP;
24163#ifdef FEATURE_WLAN_SCAN_PNO
24164 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24165 return WDI_SET_PREF_NETWORK_RESP;
24166 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024167 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024168 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24169 return WDI_UPDATE_SCAN_PARAMS_RESP;
24170 case WLAN_HAL_PREF_NETW_FOUND_IND:
24171 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24172#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024173#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024174 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24175 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024176#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24178 return WDI_SET_TX_PER_TRACKING_RESP;
24179#ifdef WLAN_FEATURE_PACKET_FILTERING
24180 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24181 return WDI_8023_MULTICAST_LIST_RESP;
24182 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24183 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24184 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24185 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24186 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24187 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24188#endif // WLAN_FEATURE_PACKET_FILTERING
24189
24190 case WLAN_HAL_DUMP_COMMAND_RSP:
24191 return WDI_HAL_DUMP_CMD_RESP;
24192 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24193 return WDI_SET_POWER_PARAMS_RESP;
24194#ifdef WLAN_FEATURE_VOWIFI_11R
24195 case WLAN_HAL_AGGR_ADD_TS_RSP:
24196 return WDI_AGGR_ADD_TS_RESP;
24197#endif
24198
24199#ifdef WLAN_FEATURE_GTK_OFFLOAD
24200 case WLAN_HAL_GTK_OFFLOAD_RSP:
24201 return WDI_GTK_OFFLOAD_RESP;
24202 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24203 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24204#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24205#ifdef WLAN_WAKEUP_EVENTS
24206 case WLAN_HAL_WAKE_REASON_IND:
24207 return WDI_HAL_WAKE_REASON_IND;
24208#endif // WLAN_WAKEUP_EVENTS
24209
24210 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24211 return WDI_SET_TM_LEVEL_RESP;
24212 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24213 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024214#ifdef WLAN_FEATURE_11AC
24215 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24216 return WDI_UPDATE_VHT_OP_MODE_RESP;
24217#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024218#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024219 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24220 return WDI_GET_ROAM_RSSI_RESP;
24221#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024222
Leo Chang9056f462013-08-01 19:21:11 -070024223#ifdef FEATURE_WLAN_LPHB
24224 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024225 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024226 case WLAN_HAL_LPHB_CFG_RSP:
24227 return WDI_LPHB_CFG_RESP;
24228#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024229
24230 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24231 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024232 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24233 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024234
Rajeev79dbe4c2013-10-05 11:03:42 +053024235#ifdef FEATURE_WLAN_BATCH_SCAN
24236 case WLAN_HAL_BATCHSCAN_SET_RSP:
24237 return WDI_SET_BATCH_SCAN_RESP;
24238 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24239 return WDI_BATCHSCAN_RESULT_IND;
24240#endif // FEATURE_WLAN_BATCH_SCAN
24241
Leo Chang0b0e45a2013-12-15 15:18:55 -080024242#ifdef FEATURE_WLAN_CH_AVOID
24243 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24244 return WDI_HAL_CH_AVOID_IND;
24245#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024246 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24247 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024248 case WLAN_HAL_PRINT_REG_INFO_IND:
24249 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024250 case WLAN_HAL_CH_SWITCH_V1_RSP:
24251 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024252 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24253 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024254#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24255 case WLAN_HAL_LL_SET_STATS_RSP:
24256 return WDI_LL_STATS_SET_RSP;
24257 case WLAN_HAL_LL_GET_STATS_RSP:
24258 return WDI_LL_STATS_GET_RSP;
24259 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24260 return WDI_LL_STATS_CLEAR_RSP;
24261 case WLAN_HAL_LL_NOTIFY_STATS:
24262 return WDI_HAL_LL_STATS_RESULTS_IND;
24263#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024264#ifdef WLAN_FEATURE_EXTSCAN
24265 case WLAN_HAL_EXT_SCAN_START_RSP:
24266 return WDI_EXTSCAN_START_RSP;
24267 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24268 return WDI_EXTSCAN_STOP_RSP;
24269 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24270 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24271 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24272 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24273 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24274 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24275 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24276 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24277 case WLAN_HAL_SIG_RSSI_SET_RSP:
24278 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24279 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24280 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24281 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24282 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24283 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24284 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24285 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24286 return WDI_HAL_EXTSCAN_RESULT_IND;
24287 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24288 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24289 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24290 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24291#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024292 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24293 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024294 case WLAN_HAL_FW_STATS_RSP:
24295 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024296 case WLAN_HAL_ENCRYPT_DATA_RSP:
24297 return WDI_ENCRYPT_MSG_RSP;
24298
Jeff Johnson295189b2012-06-20 16:38:30 -070024299 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024300 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024301 }
24302
24303}/*HAL_2_WDI_RSP_TYPE*/
24304
24305
24306/*Convert WDI driver type into HAL driver type*/
24307WPT_STATIC WPT_INLINE tDriverType
24308WDI_2_HAL_DRV_TYPE
24309(
24310 WDI_DriverType wdiDriverType
24311)
24312{
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 the chances of getting inlined*/
24315 switch( wdiDriverType )
24316 {
24317 case WDI_DRIVER_TYPE_PRODUCTION:
24318 return eDRIVER_TYPE_PRODUCTION;
24319 case WDI_DRIVER_TYPE_MFG:
24320 return eDRIVER_TYPE_MFG;
24321 case WDI_DRIVER_TYPE_DVT:
24322 return eDRIVER_TYPE_DVT;
24323 }
24324
Jeff Johnsone7245742012-09-05 17:12:55 -070024325 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024326}/*WDI_2_HAL_DRV_TYPE*/
24327
24328
24329/*Convert WDI stop reason into HAL stop reason*/
24330WPT_STATIC WPT_INLINE tHalStopType
24331WDI_2_HAL_STOP_REASON
24332(
24333 WDI_StopType wdiDriverType
24334)
24335{
Jeff Johnsone7245742012-09-05 17:12:55 -070024336 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 the chances of getting inlined*/
24338 switch( wdiDriverType )
24339 {
24340 case WDI_STOP_TYPE_SYS_RESET:
24341 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024342 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24343 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 case WDI_STOP_TYPE_RF_KILL:
24345 return HAL_STOP_TYPE_RF_KILL;
24346 }
24347
Jeff Johnsone7245742012-09-05 17:12:55 -070024348 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024349}/*WDI_2_HAL_STOP_REASON*/
24350
24351
24352/*Convert WDI scan mode type into HAL scan mode type*/
24353WPT_STATIC WPT_INLINE eHalSysMode
24354WDI_2_HAL_SCAN_MODE
24355(
24356 WDI_ScanMode wdiScanMode
24357)
24358{
Jeff Johnsone7245742012-09-05 17:12:55 -070024359 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 the chances of getting inlined*/
24361 switch( wdiScanMode )
24362 {
24363 case WDI_SCAN_MODE_NORMAL:
24364 return eHAL_SYS_MODE_NORMAL;
24365 case WDI_SCAN_MODE_LEARN:
24366 return eHAL_SYS_MODE_LEARN;
24367 case WDI_SCAN_MODE_SCAN:
24368 return eHAL_SYS_MODE_SCAN;
24369 case WDI_SCAN_MODE_PROMISC:
24370 return eHAL_SYS_MODE_PROMISC;
24371 case WDI_SCAN_MODE_SUSPEND_LINK:
24372 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024373 case WDI_SCAN_MODE_ROAM_SCAN:
24374 return eHAL_SYS_MODE_ROAM_SCAN;
24375 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24376 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 }
24378
Jeff Johnsone7245742012-09-05 17:12:55 -070024379 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024380}/*WDI_2_HAL_SCAN_MODE*/
24381
24382/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024383WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024384WDI_2_HAL_SEC_CH_OFFSET
24385(
24386 WDI_HTSecondaryChannelOffset wdiSecChOffset
24387)
24388{
Jeff Johnsone7245742012-09-05 17:12:55 -070024389 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024390 the chances of getting inlined*/
24391 switch( wdiSecChOffset )
24392 {
24393 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024394 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024395 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024396 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024397 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024398 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24399#ifdef WLAN_FEATURE_11AC
24400 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24401 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24402 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24403 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24404 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24405 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24406 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24407 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24408 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24409 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24410 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24411 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24412 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24413 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24414#endif
24415 default:
24416 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 }
24418
Jeff Johnsone7245742012-09-05 17:12:55 -070024419 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024420}/*WDI_2_HAL_SEC_CH_OFFSET*/
24421
24422/*Convert WDI BSS type into HAL BSS type*/
24423WPT_STATIC WPT_INLINE tSirBssType
24424WDI_2_HAL_BSS_TYPE
24425(
24426 WDI_BssType wdiBSSType
24427)
24428{
Jeff Johnsone7245742012-09-05 17:12:55 -070024429 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024430 the chances of getting inlined*/
24431 switch( wdiBSSType )
24432 {
24433 case WDI_INFRASTRUCTURE_MODE:
24434 return eSIR_INFRASTRUCTURE_MODE;
24435 case WDI_INFRA_AP_MODE:
24436 return eSIR_INFRA_AP_MODE;
24437 case WDI_IBSS_MODE:
24438 return eSIR_IBSS_MODE;
24439 case WDI_BTAMP_STA_MODE:
24440 return eSIR_BTAMP_STA_MODE;
24441 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024442 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 case WDI_BSS_AUTO_MODE:
24444 return eSIR_AUTO_MODE;
24445 }
24446
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024448}/*WDI_2_HAL_BSS_TYPE*/
24449
24450/*Convert WDI NW type into HAL NW type*/
24451WPT_STATIC WPT_INLINE tSirNwType
24452WDI_2_HAL_NW_TYPE
24453(
24454 WDI_NwType wdiNWType
24455)
24456{
Jeff Johnsone7245742012-09-05 17:12:55 -070024457 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024458 the chances of getting inlined*/
24459 switch( wdiNWType )
24460 {
24461 case WDI_11A_NW_TYPE:
24462 return eSIR_11A_NW_TYPE;
24463 case WDI_11B_NW_TYPE:
24464 return eSIR_11B_NW_TYPE;
24465 case WDI_11G_NW_TYPE:
24466 return eSIR_11G_NW_TYPE;
24467 case WDI_11N_NW_TYPE:
24468 return eSIR_11N_NW_TYPE;
24469 }
24470
Jeff Johnsone7245742012-09-05 17:12:55 -070024471 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024472}/*WDI_2_HAL_NW_TYPE*/
24473
24474/*Convert WDI chanel bonding type into HAL cb type*/
24475WPT_STATIC WPT_INLINE ePhyChanBondState
24476WDI_2_HAL_CB_STATE
24477(
24478 WDI_PhyChanBondState wdiCbState
24479)
24480{
Jeff Johnsone7245742012-09-05 17:12:55 -070024481 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024482 the chances of getting inlined*/
24483 switch ( wdiCbState )
24484 {
24485 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24486 return PHY_SINGLE_CHANNEL_CENTERED;
24487 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24488 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24489 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24490 return PHY_DOUBLE_CHANNEL_CENTERED;
24491 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24492 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024493#ifdef WLAN_FEATURE_11AC
24494 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24495 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24496 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24497 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24498 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24499 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24500 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24501 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24502 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24503 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24504 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24505 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24506 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24507 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24508#endif
24509 case WDI_MAX_CB_STATE:
24510 default:
24511 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024512 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024513
Jeff Johnson295189b2012-06-20 16:38:30 -070024514 return PHY_CHANNEL_BONDING_STATE_MAX;
24515}/*WDI_2_HAL_CB_STATE*/
24516
24517/*Convert WDI chanel bonding type into HAL cb type*/
24518WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24519WDI_2_HAL_HT_OPER_MODE
24520(
24521 WDI_HTOperatingMode wdiHTOperMode
24522)
24523{
Jeff Johnsone7245742012-09-05 17:12:55 -070024524 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024525 the chances of getting inlined*/
24526 switch ( wdiHTOperMode )
24527 {
24528 case WDI_HT_OP_MODE_PURE:
24529 return eSIR_HT_OP_MODE_PURE;
24530 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24531 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24532 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24533 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24534 case WDI_HT_OP_MODE_MIXED:
24535 return eSIR_HT_OP_MODE_MIXED;
24536 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024537
Jeff Johnson295189b2012-06-20 16:38:30 -070024538 return eSIR_HT_OP_MODE_MAX;
24539}/*WDI_2_HAL_HT_OPER_MODE*/
24540
24541/*Convert WDI mimo PS type into HAL mimo PS type*/
24542WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24543WDI_2_HAL_MIMO_PS
24544(
24545 WDI_HTMIMOPowerSaveState wdiHTOperMode
24546)
24547{
Jeff Johnsone7245742012-09-05 17:12:55 -070024548 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024549 the chances of getting inlined*/
24550 switch ( wdiHTOperMode )
24551 {
24552 case WDI_HT_MIMO_PS_STATIC:
24553 return eSIR_HT_MIMO_PS_STATIC;
24554 case WDI_HT_MIMO_PS_DYNAMIC:
24555 return eSIR_HT_MIMO_PS_DYNAMIC;
24556 case WDI_HT_MIMO_PS_NA:
24557 return eSIR_HT_MIMO_PS_NA;
24558 case WDI_HT_MIMO_PS_NO_LIMIT:
24559 return eSIR_HT_MIMO_PS_NO_LIMIT;
24560 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024561
Jeff Johnson295189b2012-06-20 16:38:30 -070024562 return eSIR_HT_MIMO_PS_MAX;
24563}/*WDI_2_HAL_MIMO_PS*/
24564
24565/*Convert WDI ENC type into HAL ENC type*/
24566WPT_STATIC WPT_INLINE tAniEdType
24567WDI_2_HAL_ENC_TYPE
24568(
24569 WDI_EncryptType wdiEncType
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 ( wdiEncType )
24575 {
24576 case WDI_ENCR_NONE:
24577 return eSIR_ED_NONE;
24578
24579 case WDI_ENCR_WEP40:
24580 return eSIR_ED_WEP40;
24581
24582 case WDI_ENCR_WEP104:
24583 return eSIR_ED_WEP104;
24584
24585 case WDI_ENCR_TKIP:
24586 return eSIR_ED_TKIP;
24587
24588 case WDI_ENCR_CCMP:
24589 return eSIR_ED_CCMP;
24590
24591 case WDI_ENCR_AES_128_CMAC:
24592 return eSIR_ED_AES_128_CMAC;
24593#if defined(FEATURE_WLAN_WAPI)
24594 case WDI_ENCR_WPI:
24595 return eSIR_ED_WPI;
24596#endif
24597 default:
24598 return eSIR_ED_NOT_IMPLEMENTED;
24599 }
24600
24601}/*WDI_2_HAL_ENC_TYPE*/
24602
24603/*Convert WDI WEP type into HAL WEP type*/
24604WPT_STATIC WPT_INLINE tAniWepType
24605WDI_2_HAL_WEP_TYPE
24606(
24607 WDI_WepType wdiWEPType
24608)
24609{
Jeff Johnsone7245742012-09-05 17:12:55 -070024610 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024611 the chances of getting inlined*/
24612 switch ( wdiWEPType )
24613 {
24614 case WDI_WEP_STATIC:
24615 return eSIR_WEP_STATIC;
24616
24617 case WDI_WEP_DYNAMIC:
24618 return eSIR_WEP_DYNAMIC;
24619 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024620
Jeff Johnson295189b2012-06-20 16:38:30 -070024621 return eSIR_WEP_MAX;
24622}/*WDI_2_HAL_WEP_TYPE*/
24623
24624WPT_STATIC WPT_INLINE tSirLinkState
24625WDI_2_HAL_LINK_STATE
24626(
24627 WDI_LinkStateType wdiLinkState
24628)
24629{
Jeff Johnsone7245742012-09-05 17:12:55 -070024630 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024631 the chances of getting inlined*/
24632 switch ( wdiLinkState )
24633 {
24634 case WDI_LINK_IDLE_STATE:
24635 return eSIR_LINK_IDLE_STATE;
24636
24637 case WDI_LINK_PREASSOC_STATE:
24638 return eSIR_LINK_PREASSOC_STATE;
24639
24640 case WDI_LINK_POSTASSOC_STATE:
24641 return eSIR_LINK_POSTASSOC_STATE;
24642
24643 case WDI_LINK_AP_STATE:
24644 return eSIR_LINK_AP_STATE;
24645
24646 case WDI_LINK_IBSS_STATE:
24647 return eSIR_LINK_IBSS_STATE;
24648
24649 case WDI_LINK_BTAMP_PREASSOC_STATE:
24650 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24651
24652 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24653 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24654
24655 case WDI_LINK_BTAMP_AP_STATE:
24656 return eSIR_LINK_BTAMP_AP_STATE;
24657
24658 case WDI_LINK_BTAMP_STA_STATE:
24659 return eSIR_LINK_BTAMP_STA_STATE;
24660
24661 case WDI_LINK_LEARN_STATE:
24662 return eSIR_LINK_LEARN_STATE;
24663
24664 case WDI_LINK_SCAN_STATE:
24665 return eSIR_LINK_SCAN_STATE;
24666
24667 case WDI_LINK_FINISH_SCAN_STATE:
24668 return eSIR_LINK_FINISH_SCAN_STATE;
24669
24670 case WDI_LINK_INIT_CAL_STATE:
24671 return eSIR_LINK_INIT_CAL_STATE;
24672
24673 case WDI_LINK_FINISH_CAL_STATE:
24674 return eSIR_LINK_FINISH_CAL_STATE;
24675
Jeff Johnson295189b2012-06-20 16:38:30 -070024676 case WDI_LINK_LISTEN_STATE:
24677 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024678
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024679 case WDI_LINK_SEND_ACTION_STATE:
24680 return eSIR_LINK_SEND_ACTION_STATE;
24681
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 default:
24683 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024684 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024685}
24686
Jeff Johnsone7245742012-09-05 17:12:55 -070024687/*Translate a STA Context from WDI into HAL*/
24688WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024689void
24690WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024691(
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 tConfigStaParams* phalConfigSta,
24693 WDI_ConfigStaReqInfoType* pwdiConfigSta
24694)
24695{
24696 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024697#ifdef WLAN_FEATURE_11AC
24698 /* Get the Version 1 Handler */
24699 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24700 if (WDI_getFwWlanFeatCaps(DOT11AC))
24701 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024702 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 }
24704#endif
24705 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024706 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024707
Jeff Johnsone7245742012-09-05 17:12:55 -070024708 wpalMemoryCopy(phalConfigSta->bssId,
24709 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24710
24711 wpalMemoryCopy(phalConfigSta->staMac,
24712 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024713
24714 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24715 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24716 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24717 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24718 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24719 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24720 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24721 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24722 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24723 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24724 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24725 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24726 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24727 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24728 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24729 phalConfigSta->action = pwdiConfigSta->wdiAction;
24730 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24731 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24732 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24733 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24734 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24735 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24736 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024737
Jeff Johnson295189b2012-06-20 16:38:30 -070024738 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24739
Jeff Johnsone7245742012-09-05 17:12:55 -070024740 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024741 pwdiConfigSta->wdiSupportedRates.opRateMode;
24742 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24743 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024744 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024745 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24746 }
24747 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24748 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024749 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024750 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24751 }
24752 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24753 {
24754 phalConfigSta->supportedRates.aniLegacyRates[i] =
24755 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24756 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024757 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24759 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24760 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024761 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024762 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24763 }
24764 phalConfigSta->supportedRates.rxHighestDataRate =
24765 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24766
Jeff Johnsone7245742012-09-05 17:12:55 -070024767#ifdef WLAN_FEATURE_11AC
24768 if(phalConfigSta_V1 != NULL)
24769 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024770 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24771 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24772 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24773 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024774 }
24775#endif
24776
Jeff Johnson295189b2012-06-20 16:38:30 -070024777 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024778
Jeff Johnsone7245742012-09-05 17:12:55 -070024779#ifdef WLAN_FEATURE_11AC
24780 if(phalConfigSta_V1 != NULL)
24781 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024782 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24783 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024784 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053024785 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024786 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24787 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24788
Jeff Johnsone7245742012-09-05 17:12:55 -070024789 }
24790#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024791}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024792
24793/*Translate a Rate set info from WDI into HAL*/
24794WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024795WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024796(
Jeff Johnson295189b2012-06-20 16:38:30 -070024797 tSirMacRateSet* pHalRateSet,
24798 WDI_RateSet* pwdiRateSet
24799)
24800{
Jeff Johnsone7245742012-09-05 17:12:55 -070024801 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24803
24804 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24805 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24806
24807 for ( i = 0; i < pHalRateSet->numRates; i++ )
24808 {
24809 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24810 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024811
Jeff Johnson295189b2012-06-20 16:38:30 -070024812}/*WDI_CopyWDIRateSetToHALRateSet*/
24813
24814
24815/*Translate an EDCA Parameter Record from WDI into HAL*/
24816WPT_STATIC WPT_INLINE void
24817WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024818(
Jeff Johnson295189b2012-06-20 16:38:30 -070024819 tSirMacEdcaParamRecord* phalEdcaParam,
24820 WDI_EdcaParamRecord* pWDIEdcaParam
24821)
24822{
Jeff Johnsone7245742012-09-05 17:12:55 -070024823 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024824 the chances of getting inlined*/
24825
24826 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24827 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24828 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24829 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24830
24831 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24832 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24833 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24834}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24835
24836
24837/*Copy a management frame header from WDI fmt into HAL fmt*/
24838WPT_STATIC WPT_INLINE void
24839WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24840(
24841 tSirMacMgmtHdr* pmacMgmtHdr,
24842 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24843)
24844{
24845 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24846 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24847 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24848 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24849 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24850 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24851 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24852 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24853 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24854 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24855 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24856
24857 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24858 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24859
Jeff Johnsone7245742012-09-05 17:12:55 -070024860 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024861 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024862 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024863 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024864 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024865 pwdiMacMgmtHdr->bssId, 6);
24866
24867 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24868 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24869 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24870
24871}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24872
24873
24874/*Copy config bss parameters from WDI fmt into HAL fmt*/
24875WPT_STATIC WPT_INLINE void
24876WDI_CopyWDIConfigBSSToHALConfigBSS
24877(
24878 tConfigBssParams* phalConfigBSS,
24879 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24880)
24881{
24882
24883 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024884#ifdef WLAN_FEATURE_11AC
24885 /* Get the Version 1 Handler */
24886 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24887 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024888 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024889#endif
24890
Jeff Johnson295189b2012-06-20 16:38:30 -070024891 wpalMemoryCopy( phalConfigBSS->bssId,
24892 pwdiConfigBSS->macBSSID,
24893 WDI_MAC_ADDR_LEN);
24894
24895#ifdef HAL_SELF_STA_PER_BSS
24896 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24897 pwdiConfigBSS->macSelfAddr,
24898 WDI_MAC_ADDR_LEN);
24899#endif
24900
24901 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24902
24903 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24904 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24905
Jeff Johnsone7245742012-09-05 17:12:55 -070024906 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024907 pwdiConfigBSS->ucShortSlotTimeSupported;
24908 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24909 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24910 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24911 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24912 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024913 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024914 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24915 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24916 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24917 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24918 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24919 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24920 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24921 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24922 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24923 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24924 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24925
Jeff Johnsone7245742012-09-05 17:12:55 -070024926 phalConfigBSS->htOperMode =
24927 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024928
24929 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24930 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24931 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24932 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24933
24934#ifdef WLAN_FEATURE_VOWIFI
24935 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24936#endif
24937
24938 /*! Used 32 as magic number because that is how the ssid is declared inside the
24939 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024940 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024941 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24942 pwdiConfigBSS->wdiSSID.ucLength : 32;
24943 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024944 pwdiConfigBSS->wdiSSID.sSSID,
24945 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024946
24947 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24948 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024949
Jeff Johnson295189b2012-06-20 16:38:30 -070024950 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24951 &pwdiConfigBSS->wdiRateSet);
24952
24953 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24954
24955 if(phalConfigBSS->edcaParamsValid)
24956 {
24957 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24958 &pwdiConfigBSS->wdiBEEDCAParams);
24959 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24960 &pwdiConfigBSS->wdiBKEDCAParams);
24961 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24962 &pwdiConfigBSS->wdiVIEDCAParams);
24963 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24964 &pwdiConfigBSS->wdiVOEDCAParams);
24965 }
24966
Jeff Johnsone7245742012-09-05 17:12:55 -070024967 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024968
24969 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24970
24971#ifdef WLAN_FEATURE_VOWIFI_11R
24972
Jeff Johnsone7245742012-09-05 17:12:55 -070024973 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024974 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024975
Jeff Johnson295189b2012-06-20 16:38:30 -070024976 if( phalConfigBSS->extSetStaKeyParamValid )
24977 {
24978 /*-----------------------------------------------------------------------
24979 Copy the STA Key parameters into the HAL message
24980 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024981 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024982 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24983
Jeff Johnsone7245742012-09-05 17:12:55 -070024984 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024985 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24986
24987 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24988
24989 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24990
24991 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24992
Jeff Johnson295189b2012-06-20 16:38:30 -070024993 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24994 keyIndex++)
24995 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024996 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024997 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24998 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24999 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25000 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25001 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25002 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025003 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025004 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025005 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025006 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025007 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025008 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25009 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025010 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025011 WDI_MAX_KEY_LENGTH);
25012 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025013 }
25014 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25015 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025016 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025017 sizeof(phalConfigBSS->extSetStaKeyParam) );
25018 }
25019
25020#endif /*WLAN_FEATURE_VOWIFI_11R*/
25021
Jeff Johnsone7245742012-09-05 17:12:55 -070025022#ifdef WLAN_FEATURE_11AC
25023 if(phalConfigBSS_V1 != NULL)
25024 {
25025 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25026 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25027 }
25028#endif
25029
Jeff Johnson295189b2012-06-20 16:38:30 -070025030}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25031
25032
Jeff Johnsone7245742012-09-05 17:12:55 -070025033/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025034 pointed to by user data */
25035WPT_STATIC WPT_INLINE void
25036WDI_ExtractRequestCBFromEvent
25037(
25038 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025039 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025040 void** ppUserData
25041)
25042{
25043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25044 switch ( pEvent->wdiRequest )
25045 {
25046 case WDI_START_REQ:
25047 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25048 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25049 break;
25050 case WDI_STOP_REQ:
25051 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25052 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25053 break;
25054 case WDI_INIT_SCAN_REQ:
25055 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25056 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25057 break;
25058 case WDI_START_SCAN_REQ:
25059 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25060 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25061 break;
25062 case WDI_END_SCAN_REQ:
25063 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25064 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25065 break;
25066 case WDI_FINISH_SCAN_REQ:
25067 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25068 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25069 break;
25070 case WDI_JOIN_REQ:
25071 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25072 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25073 break;
25074 case WDI_CONFIG_BSS_REQ:
25075 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25076 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25077 break;
25078 case WDI_DEL_BSS_REQ:
25079 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25080 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25081 break;
25082 case WDI_POST_ASSOC_REQ:
25083 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25084 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25085 break;
25086 case WDI_DEL_STA_REQ:
25087 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25088 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25089 break;
25090 case WDI_DEL_STA_SELF_REQ:
25091 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25092 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25093 break;
25094
25095 case WDI_SET_BSS_KEY_REQ:
25096 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25097 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25098 break;
25099 case WDI_RMV_BSS_KEY_REQ:
25100 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25101 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25102 break;
25103 case WDI_SET_STA_KEY_REQ:
25104 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25105 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25106 break;
25107 case WDI_RMV_STA_KEY_REQ:
25108 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25109 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25110 break;
25111 case WDI_ADD_TS_REQ:
25112 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25113 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25114 break;
25115 case WDI_DEL_TS_REQ:
25116 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25117 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25118 break;
25119 case WDI_UPD_EDCA_PRMS_REQ:
25120 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25121 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25122 break;
25123 case WDI_ADD_BA_SESSION_REQ:
25124 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25125 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25126 break;
25127 case WDI_DEL_BA_REQ:
25128 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25129 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25130 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025131#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025132 case WDI_TSM_STATS_REQ:
25133 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25134 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25135 break;
25136#endif
25137 case WDI_CH_SWITCH_REQ:
25138 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25139 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25140 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025141 case WDI_CH_SWITCH_REQ_V1:
25142 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25143 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25144 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025145 case WDI_CONFIG_STA_REQ:
25146 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25147 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25148 break;
25149 case WDI_SET_LINK_ST_REQ:
25150 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25151 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25152 break;
25153 case WDI_GET_STATS_REQ:
25154 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25155 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25156 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025157#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025158 case WDI_GET_ROAM_RSSI_REQ:
25159 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25160 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25161 break;
25162#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 case WDI_UPDATE_CFG_REQ:
25164 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25165 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25166 break;
25167 case WDI_ADD_BA_REQ:
25168 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25169 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25170 break;
25171 case WDI_TRIGGER_BA_REQ:
25172 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25173 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25174 break;
25175 case WDI_UPD_BCON_PRMS_REQ:
25176 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25177 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25178 break;
25179 case WDI_SND_BCON_REQ:
25180 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25181 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25182 break;
25183 case WDI_ENTER_BMPS_REQ:
25184 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25185 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25186 break;
25187 case WDI_EXIT_BMPS_REQ:
25188 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25189 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25190 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025191 case WDI_ENTER_IMPS_REQ:
25192 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25193 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25194 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025195 case WDI_ENTER_UAPSD_REQ:
25196 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25197 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25198 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025199 case WDI_EXIT_UAPSD_REQ:
25200 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25201 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25202 break;
25203 case WDI_SET_UAPSD_PARAM_REQ:
25204 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25205 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25206 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025207 case WDI_UPDATE_UAPSD_PARAM_REQ:
25208 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25209 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25210 break;
25211 case WDI_CONFIGURE_RXP_FILTER_REQ:
25212 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25213 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25214 break;
25215 case WDI_SET_BEACON_FILTER_REQ:
25216 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25217 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25218 break;
25219 case WDI_REM_BEACON_FILTER_REQ:
25220 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25221 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025222 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025223 case WDI_SET_RSSI_THRESHOLDS_REQ:
25224 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25225 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25226 break;
25227 case WDI_HOST_OFFLOAD_REQ:
25228 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25229 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25230 break;
25231 case WDI_WOWL_ADD_BC_PTRN_REQ:
25232 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25233 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25234 break;
25235 case WDI_WOWL_DEL_BC_PTRN_REQ:
25236 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25237 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25238 break;
25239 case WDI_WOWL_ENTER_REQ:
25240 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25241 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25242 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025243 case WDI_WOWL_EXIT_REQ:
25244 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25245 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25246 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025247 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25248 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25249 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25250 break;
25251 case WDI_FLUSH_AC_REQ:
25252 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25253 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25254 break;
25255 case WDI_BTAMP_EVENT_REQ:
25256 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25257 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25258 break;
25259 case WDI_KEEP_ALIVE_REQ:
25260 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25261 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25262 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025263#if defined FEATURE_WLAN_SCAN_PNO
25264 case WDI_SET_PREF_NETWORK_REQ:
25265 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25266 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25267 break;
25268 case WDI_SET_RSSI_FILTER_REQ:
25269 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25270 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25271 break;
25272 case WDI_UPDATE_SCAN_PARAMS_REQ:
25273 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25274 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25275 break;
25276#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025277 case WDI_SET_TX_PER_TRACKING_REQ:
25278 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25279 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025280 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025281#if defined WLAN_FEATURE_PACKET_FILTERING
25282 case WDI_8023_MULTICAST_LIST_REQ:
25283 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25284 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25285 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025286 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25287 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25288 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25289 break;
25290 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25291 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25292 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25293 break;
25294 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25295 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25296 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25297 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025298#endif
25299 case WDI_SET_POWER_PARAMS_REQ:
25300 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25301 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25302 break;
25303#if defined WLAN_FEATURE_GTK_OFFLOAD
25304 case WDI_GTK_OFFLOAD_REQ:
25305 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25306 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25307 break;
25308 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25309 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25310 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25311 break;
25312#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025313
Jeff Johnson295189b2012-06-20 16:38:30 -070025314 default:
25315 *ppfnReqCB = NULL;
25316 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025317 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 }
25319}/*WDI_ExtractRequestCBFromEvent*/
25320
25321
25322/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025323 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025324 frame xtl is enabled for a particular STA.
25325
25326 WDI_PostAssocReq must have been called.
25327
Jeff Johnsone7245742012-09-05 17:12:55 -070025328 @param uSTAIdx: STA index
25329
Jeff Johnson295189b2012-06-20 16:38:30 -070025330 @see WDI_PostAssocReq
25331 @return Result of the function call
25332*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025333wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025334WDI_IsHwFrameTxTranslationCapable
25335(
25336 wpt_uint8 uSTAIdx
25337)
25338{
Jeff Johnsone7245742012-09-05 17:12:55 -070025339 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 uma value*/
25341 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025342 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025343 ------------------------------------------------------------------------*/
25344 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25345 {
25346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25347 "WDI API call before module is initialized - Fail request");
25348
Jeff Johnsone7245742012-09-05 17:12:55 -070025349 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025350 }
25351
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025352#ifdef WLAN_SOFTAP_VSTA_FEATURE
25353 if (IS_VSTA_IDX(uSTAIdx))
25354 {
25355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25356 "STA %d is a Virtual STA, "
25357 "HW frame translation disabled", uSTAIdx);
25358 return eWLAN_PAL_FALSE;
25359 }
25360#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025361
Jeff Johnson295189b2012-06-20 16:38:30 -070025362 return gWDICb.bFrameTransEnabled;
25363}/*WDI_IsHwFrameTxTranslationCapable*/
25364
Katya Nigam6201c3e2014-05-27 17:51:42 +053025365
25366/**
25367 @brief WDI_IsSelfSTA - check if staid is self sta index
25368
25369
25370 @param pWDICtx: pointer to the WLAN DAL context
25371 ucSTAIdx: station index
25372
25373 @return Result of the function call
25374*/
25375wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25376{
25377 wpt_uint8 ucSTAType;
25378
25379 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25380 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25381 {
25382 if( ucSTAType == WDI_STA_ENTRY_SELF )
25383 return eWLAN_PAL_TRUE;
25384 }
25385
25386 return eWLAN_PAL_FALSE;
25387}
25388
25389
25390
Jeff Johnson295189b2012-06-20 16:38:30 -070025391#ifdef FEATURE_WLAN_SCAN_PNO
25392/**
25393 @brief WDI_SetPreferredNetworkList
25394
Jeff Johnsone7245742012-09-05 17:12:55 -070025395 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025396 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025397
Jeff Johnson295189b2012-06-20 16:38:30 -070025398 wdiPNOScanCb: callback for passing back the response
25399 of the Set PNO operation received from the
25400 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025401
Jeff Johnson295189b2012-06-20 16:38:30 -070025402 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025403 callback
25404
Jeff Johnson295189b2012-06-20 16:38:30 -070025405 @return Result of the function call
25406*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025407WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025408WDI_SetPreferredNetworkReq
25409(
25410 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25411 WDI_PNOScanCb wdiPNOScanCb,
25412 void* pUserData
25413)
25414{
25415 WDI_EventInfoType wdiEventData = {{0}};
25416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25417
25418 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025419 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025420 ------------------------------------------------------------------------*/
25421 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25422 {
25423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25424 "WDI API call before module is initialized - Fail request");
25425
Jeff Johnsone7245742012-09-05 17:12:55 -070025426 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025427 }
25428
25429 /*------------------------------------------------------------------------
25430 Fill in Event data and post to the Main FSM
25431 ------------------------------------------------------------------------*/
25432 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025433 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025434 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025435 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025436 wdiEventData.pUserData = pUserData;
25437
25438 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25439}
25440
25441
25442/**
25443 @brief WDI_SetRssiFilterReq
25444
Jeff Johnsone7245742012-09-05 17:12:55 -070025445 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025446 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025447
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 wdiRssiFilterCb: callback for passing back the response
25449 of the Set RSSI Filter operation received from the
25450 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025451
Jeff Johnson295189b2012-06-20 16:38:30 -070025452 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025453 callback
25454
Jeff Johnson295189b2012-06-20 16:38:30 -070025455 @return Result of the function call
25456*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025457WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025458WDI_SetRssiFilterReq
25459(
25460 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25461 WDI_RssiFilterCb wdiRssiFilterCb,
25462 void* pUserData
25463)
25464{
25465 WDI_EventInfoType wdiEventData = {{0}};
25466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25467
25468 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025469 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025470 ------------------------------------------------------------------------*/
25471 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25472 {
25473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25474 "WDI API call before module is initialized - Fail request");
25475
Jeff Johnsone7245742012-09-05 17:12:55 -070025476 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025477 }
25478
25479 /*------------------------------------------------------------------------
25480 Fill in Event data and post to the Main FSM
25481 ------------------------------------------------------------------------*/
25482 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025483 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025484 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025485 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025486 wdiEventData.pUserData = pUserData;
25487
25488 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25489}/*WDI_SetRssiFilterReq*/
25490
25491/**
25492 @brief WDI_UpdateScanParamsReq
25493
Jeff Johnsone7245742012-09-05 17:12:55 -070025494 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025495 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025496
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 wdiUpdateScanParamsCb: callback for passing back the response
25498 of the Set PNO operation received from the
25499 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025500
Jeff Johnson295189b2012-06-20 16:38:30 -070025501 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025502 callback
25503
Jeff Johnson295189b2012-06-20 16:38:30 -070025504 @return Result of the function call
25505*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025506WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025507WDI_UpdateScanParamsReq
25508(
25509 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25510 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25511 void* pUserData
25512)
25513{
25514 WDI_EventInfoType wdiEventData = {{0}};
25515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25516
25517 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025518 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025519 ------------------------------------------------------------------------*/
25520 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25521 {
25522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25523 "WDI API call before module is initialized - Fail request");
25524
Jeff Johnsone7245742012-09-05 17:12:55 -070025525 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025526 }
25527
25528 /*------------------------------------------------------------------------
25529 Fill in Event data and post to the Main FSM
25530 ------------------------------------------------------------------------*/
25531 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025532 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025533 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025534 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025535 wdiEventData.pUserData = pUserData;
25536
25537 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25538}
25539
25540/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025541 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025542 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025543
25544 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025545 pwdiPNOScanReqParams: pointer to the info received
25546 from upper layers
25547 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025548 and its size
25549
Jeff Johnson295189b2012-06-20 16:38:30 -070025550 @return Result of the function call
25551*/
25552
25553WDI_Status
25554WDI_PackPreferredNetworkList
25555(
25556 WDI_ControlBlockType* pWDICtx,
25557 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25558 wpt_uint8** ppSendBuffer,
25559 wpt_uint16* pSize
25560)
25561{
Jeff Johnsone7245742012-09-05 17:12:55 -070025562 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 wpt_uint16 usDataOffset = 0;
25564 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025565 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 /*-----------------------------------------------------------------------
25568 Get message buffer
25569 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025570 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025571 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025572 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025573 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 {
25575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025576 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025577 pwdiPNOScanReqParams);
25578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025580 }
25581
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025582 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25583
Jeff Johnson295189b2012-06-20 16:38:30 -070025584 /*-------------------------------------------------------------------------
25585 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25586 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025587 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025588 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025589 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25591
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025592 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025593 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025594 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025595 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025596 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25597
25598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025599 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025600 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25601 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25602 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25603
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025604 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025605 {
25606 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025607 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025608 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25609
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025610 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025611 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025612 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025613
25614 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025615 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025616 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025617
25618 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025619 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025621
Jeff Johnsone7245742012-09-05 17:12:55 -070025622 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025623 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025624 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025625 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25626 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25627 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25628 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025629
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025630 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025631 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025632 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025633
25634 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025635 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025636 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25637
25638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025639 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025640 pPrefNetwListParams->aNetworks[i].ssId.length,
25641 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025642 }
25643
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025644 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025645 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025646 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25647 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25648 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25649
25650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025651 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025652 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025653 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25654 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25655
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025656 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025657 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025658 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025660 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025661 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25662 }
25663
25664 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025665 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025666 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25667 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25668 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025669 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025670
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025671 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025672 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025673 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025674
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025675 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025676 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25677 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25678 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025679 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025680
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025681 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025682 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025683 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025684
25685 /*Set the output values*/
25686 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025687 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025688
25689 return WDI_STATUS_SUCCESS;
25690}/*WDI_PackPreferredNetworkList*/
25691
25692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025693 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025694 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025695
25696 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025697 pwdiPNOScanReqParams: pointer to the info received
25698 from upper layers
25699 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025700 and its size
25701
Jeff Johnson295189b2012-06-20 16:38:30 -070025702 @return Result of the function call
25703*/
25704
25705WDI_Status
25706WDI_PackPreferredNetworkListNew
25707(
25708 WDI_ControlBlockType* pWDICtx,
25709 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25710 wpt_uint8** ppSendBuffer,
25711 wpt_uint16* pSize
25712)
25713{
Jeff Johnsone7245742012-09-05 17:12:55 -070025714 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025715 wpt_uint16 usDataOffset = 0;
25716 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025717 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025719
25720 /*-----------------------------------------------------------------------
25721 Get message buffer
25722 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025723 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025724 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025725 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025726 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025727 {
25728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025729 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025730 pwdiPNOScanReqParams);
25731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025733 }
25734
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025735 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25736
Jeff Johnson295189b2012-06-20 16:38:30 -070025737 /*-------------------------------------------------------------------------
25738 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25739 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025740 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025741 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025742 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025743 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25744
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025745 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025746 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025747 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025748 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025749 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25750
25751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025752 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025753 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25754 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25755 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25756
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025757 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025758 {
25759 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025760 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025761 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25762
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025763 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025764 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025765 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025766
25767 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025768 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025769 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025770
25771 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025772 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025773 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025774
25775 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025776 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025777 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025778
Jeff Johnsone7245742012-09-05 17:12:55 -070025779 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025780 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025781 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25783
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025784 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025785 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025786 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025787
25788 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025789 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025790 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25791
25792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025793 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025794 pPrefNetwListParams->aNetworks[i].ssId.length,
25795 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025796 }
25797
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025798 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025799 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025800 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25801 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25802 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25803
25804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025805 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025806 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025807 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25808 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25809
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025810 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025811 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025812 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025813 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025814 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025815 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25816 }
25817
25818 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025819 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025820 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25821 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25822 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025823 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025824
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025825 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025826 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025827 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025828
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025829 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025830 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25831 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25832 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025833 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025834
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025835 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025836 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025837 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025838
Jeff Johnson295189b2012-06-20 16:38:30 -070025839
25840 /*Set the output values*/
25841 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025842 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025843
25844 return WDI_STATUS_SUCCESS;
25845}/*WDI_PackPreferredNetworkListNew*/
25846
25847/**
25848 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025849
25850 @param pWDICtx: pointer to the WLAN DAL context
25851 pEventData: pointer to the event information structure
25852
Jeff Johnson295189b2012-06-20 16:38:30 -070025853 @return Result of the function call
25854*/
25855WDI_Status
25856WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025857(
Jeff Johnson295189b2012-06-20 16:38:30 -070025858 WDI_ControlBlockType* pWDICtx,
25859 WDI_EventInfoType* pEventData
25860)
25861{
25862 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25863 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025866 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025867
25868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025870 -------------------------------------------------------------------------*/
25871 if (( NULL == pEventData ) ||
25872 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25873 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25874 {
25875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025879 }
25880
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025881 /*----------------------------------------------------------------------
25882 Avoid Enable PNO during any active session or an ongoing session
25883 ----------------------------------------------------------------------*/
25884 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25885 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25886 {
25887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25888 "%s:(Active/Ongoing Session) - Fail request", __func__);
25889
25890 return WDI_STATUS_E_FAILURE;
25891 }
25892
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 /*-------------------------------------------------------------------------
25894 Pack the PNO request structure based on version
25895 -------------------------------------------------------------------------*/
25896 if ( pWDICtx->wdiPNOVersion > 0 )
25897 {
25898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025899 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025900 pWDICtx->wdiPNOVersion);
25901
25902 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25903 &pSendBuffer, &usSendSize);
25904 }
25905 else
25906 {
25907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025908 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 pWDICtx->wdiPNOVersion);
25910
25911 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25912 &pSendBuffer, &usSendSize);
25913 }
25914
25915 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25916 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25917 {
25918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025919 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025921 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025922 }
25923
25924 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025925 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025926
25927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025928 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025929 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025930 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25931 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025932}
25933
25934/**
25935 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025936
25937 @param pWDICtx: pointer to the WLAN DAL context
25938 pEventData: pointer to the event information structure
25939
Jeff Johnson295189b2012-06-20 16:38:30 -070025940 @see
25941 @return Result of the function call
25942*/
25943WDI_Status
25944WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025945(
Jeff Johnson295189b2012-06-20 16:38:30 -070025946 WDI_ControlBlockType* pWDICtx,
25947 WDI_EventInfoType* pEventData
25948)
25949{
25950 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25951 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025952 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025953 wpt_uint16 usDataOffset = 0;
25954 wpt_uint16 usSendSize = 0;
25955 wpt_uint8 ucRssiThreshold;
25956
25957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025959 -------------------------------------------------------------------------*/
25960 if (( NULL == pEventData ) ||
25961 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25962 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25963 {
25964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025968 }
25969
25970 /*-----------------------------------------------------------------------
25971 Get message buffer
25972 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025973 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025974 sizeof(ucRssiThreshold),
25975 &pSendBuffer, &usDataOffset, &usSendSize))||
25976 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25977 {
25978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025979 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025980 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025983 }
25984
25985 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25986
Jeff Johnsone7245742012-09-05 17:12:55 -070025987 wpalMemoryCopy( pSendBuffer+usDataOffset,
25988 &ucRssiThreshold,
25989 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025990
25991 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025992 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025993
25994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025995 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025996 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025997 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25998 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025999}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026000#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26001/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026002 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026003
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026004 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026005 by the Device Interface
26006
26007 wdiRoamOffloadScancb: callback for passing back the response
26008 of the Roam Candidate Lookup Req operation received from the
26009 device
26010
26011 pUserData: user data will be passed back with the
26012 callback
26013 @return Result of the function call
26014*/
26015WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026016WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026017(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026018 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026019 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26020 void* pUserData
26021)
26022{
26023 WDI_EventInfoType wdiEventData = {{0}};
26024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26025
26026 /*------------------------------------------------------------------------
26027 Sanity Check
26028 ------------------------------------------------------------------------*/
26029 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26030 {
26031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26032 "WDI API call before module is initialized - Fail request");
26033
26034 return WDI_STATUS_E_NOT_ALLOWED;
26035 }
26036
26037 /*------------------------------------------------------------------------
26038 Fill in Event data and post to the Main FSM
26039 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026040 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26041 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26042 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026043 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26044 wdiEventData.pUserData = pUserData;
26045
26046 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26047}
26048
26049void
26050WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26051{
26052 switch (wdiEdType)
26053 {
26054 case WDI_ED_NONE:
26055 *EdType = eED_NONE;
26056 break;
26057 case WDI_ED_WEP40:
26058 case WDI_ED_WEP104:
26059 *EdType = eED_WEP;
26060 break;
26061 case WDI_ED_TKIP:
26062 *EdType = eED_TKIP;
26063 break;
26064 case WDI_ED_CCMP:
26065#ifdef WLAN_FEATURE_11W
26066 case WDI_ED_AES_128_CMAC:
26067#endif
26068 *EdType = eED_CCMP;
26069 break;
26070#ifdef FEATURE_WLAN_WAPI
26071 case WDI_ED_WPI:
26072 *EdType = eED_WPI;
26073 break;
26074#endif
26075 case WDI_ED_ANY:
26076 *EdType = eED_ANY;
26077 break;
26078
26079 default:
26080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26081 "%s: Unknown Encryption Type", __func__);
26082 break;
26083 }
26084}
26085
26086/**
26087 @brief Helper function to pack Start Roam Candidate Lookup
26088 Request parameters
26089
26090 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026091 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026092 from upper layers
26093 ppSendBuffer, pSize - out pointers of the packed buffer
26094 and its size
26095
26096 @return Result of the function call
26097*/
26098
26099WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026100WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026101(
26102 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026103 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026104 wpt_uint8** ppSendBuffer,
26105 wpt_uint16* pSize
26106)
26107{
26108 wpt_uint8* pSendBuffer = NULL;
26109 wpt_uint16 usDataOffset = 0;
26110 wpt_uint16 usSendSize = 0;
26111 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26112 wpt_uint8 i;
26113 /*-----------------------------------------------------------------------
26114 Get message buffer
26115 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026117 sizeof(tRoamCandidateListParams),
26118 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026119 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026120 {
26121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026122 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026123 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026124 WDI_ASSERT(0);
26125 return WDI_STATUS_E_FAILURE;
26126 }
26127 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026128 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026129 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026130 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026131 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026132 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026133 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026134 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026135 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026136 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026137 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026138
26139 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026140 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026141 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026142 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026143 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26144 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026145 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26146 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26147 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26148 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26149 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026150 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026151 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026152 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026153 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26154 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26155 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26156 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26157 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26158 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26159 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026160 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026161 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026162 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26163 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26164 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026165
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26167 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26168 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26169 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26170 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26171 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026172 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026173 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26174 pRoamCandidateListParams->RoamScanOffloadEnabled,
26175 pRoamCandidateListParams->Command,
26176 pRoamCandidateListParams->StartScanReason,
26177 pRoamCandidateListParams->NeighborScanTimerPeriod,
26178 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26179 pRoamCandidateListParams->NeighborScanChannelMinTime,
26180 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26181 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26182 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26183 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26184 pRoamCandidateListParams->ConnectedNetwork.authentication,
26185 pRoamCandidateListParams->ConnectedNetwork.encryption,
26186 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26187 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26188 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026189 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026190 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026191 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026192 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026193 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26194 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026195 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026196 pRoamCandidateListParams->us24GProbeSize);
26197 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026198 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026199 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026200 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026201 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26202 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026203 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026204 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026205 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26206 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26207 pRoamCandidateListParams->nProbes =
26208 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26209 pRoamCandidateListParams->HomeAwayTime =
26210 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026212 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26213 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026215 }
26216
26217
26218 /*Set the output values*/
26219 *ppSendBuffer = pSendBuffer;
26220 *pSize = usSendSize;
26221 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026222}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026223
26224/**
26225 @brief Process Start Roam Candidate Lookup Request function
26226
26227 @param pWDICtx: pointer to the WLAN DAL context
26228 pEventData: pointer to the event information structure
26229
26230 @return Result of the function call
26231*/
26232WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026233WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026234(
26235 WDI_ControlBlockType* pWDICtx,
26236 WDI_EventInfoType* pEventData
26237)
26238{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026239 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026240 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26241 wpt_uint8* pSendBuffer = NULL;
26242 wpt_uint16 usSendSize = 0;
26243 WDI_Status wdiStatus;
26244 /*-------------------------------------------------------------------------
26245 Sanity check
26246 -------------------------------------------------------------------------*/
26247 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026248 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026249 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26250 {
26251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26252 "%s: Invalid parameters", __func__);
26253 WDI_ASSERT(0);
26254 return WDI_STATUS_E_FAILURE;
26255 }
26256
26257 /*-------------------------------------------------------------------------
26258 Pack the Start Roam Candidate Lookup request structure based on version
26259 -------------------------------------------------------------------------*/
26260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26261 "%s: Packing Roam Candidate Lookup request ", __func__);
26262
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026263 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026264 &pSendBuffer, &usSendSize);
26265
26266 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26267 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26268 {
26269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26270 "%s: failed to pack request parameters", __func__);
26271 WDI_ASSERT(0);
26272 return wdiStatus;
26273 }
26274
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026275 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26276 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026277
26278 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026279 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026280 -------------------------------------------------------------------------*/
26281 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026282 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026283}
26284
26285/**
26286 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26287 response is being received over the bus from HAL)
26288
26289 @param pWDICtx: pointer to the WLAN DAL context
26290 pEventData: pointer to the event information structure
26291
26292 @see
26293 @return Result of the function call
26294*/
26295WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026296WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026297(
26298 WDI_ControlBlockType* pWDICtx,
26299 WDI_EventInfoType* pEventData
26300)
26301{
26302 WDI_Status wdiStatus;
26303 eHalStatus halStatus;
26304 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26305
26306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26307
26308 /*-------------------------------------------------------------------------
26309 Sanity check
26310 -------------------------------------------------------------------------*/
26311 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26312 ( NULL == pEventData->pEventData ))
26313 {
26314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26315 "%s: Invalid parameters", __func__);
26316 WDI_ASSERT(0);
26317 return WDI_STATUS_E_FAILURE;
26318 }
26319
26320 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26321
26322 /*-------------------------------------------------------------------------
26323 Extract response and send it to UMAC
26324 -------------------------------------------------------------------------*/
26325 halStatus = *((eHalStatus*)pEventData->pEventData);
26326 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26327
26328 /*Notify UMAC*/
26329 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26330
26331 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026332}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026333#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026334
26335/**
26336 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026337
26338 @param pWDICtx: pointer to the WLAN DAL context
26339 pEventData: pointer to the event information structure
26340
Jeff Johnson295189b2012-06-20 16:38:30 -070026341 @see
26342 @return Result of the function call
26343*/
26344WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026345WDI_PackUpdateScanParamsReq
26346(
26347 WDI_ControlBlockType* pWDICtx,
26348 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26349 wpt_uint8** ppSendBuffer,
26350 wpt_uint16* pSize
26351)
26352{
26353 wpt_uint8* pSendBuffer = NULL;
26354 wpt_uint16 usDataOffset = 0;
26355 wpt_uint16 usSendSize = 0;
26356 tUpdateScanParams updateScanParams = {0};
26357
26358
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026360 "Begin WDI Update Scan Parameters Old Style Params");
26361 /*-----------------------------------------------------------------------
26362 Get message buffer
26363 -----------------------------------------------------------------------*/
26364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26365 sizeof(updateScanParams),
26366 &pSendBuffer, &usDataOffset, &usSendSize))||
26367 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26368 {
26369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026370 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026371 pwdiUpdateScanParams);
26372 WDI_ASSERT(0);
26373 return WDI_STATUS_E_FAILURE;
26374 }
26375
26376 //
26377 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26378 //
26379
26380 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26381 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26382
26383 updateScanParams.ucChannelCount =
26384 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26385 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26386 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26387 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26388
26389 wpalMemoryCopy( updateScanParams.aChannels,
26390 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26391 updateScanParams.ucChannelCount);
26392
26393
26394 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26395 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26396 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26397 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26398 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26399
26400 wpalMemoryCopy( pSendBuffer+usDataOffset,
26401 &updateScanParams,
26402 sizeof(updateScanParams));
26403
26404 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26405 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26406
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026408 "End Update Scan Parameters Old Style");
26409
26410 /*Set the output values*/
26411 *ppSendBuffer = pSendBuffer;
26412 *pSize = usSendSize;
26413
26414 return WDI_STATUS_SUCCESS;
26415}
26416
26417/**
26418 @brief Process Update Scan Params function
26419
26420 @param pWDICtx: pointer to the WLAN DAL context
26421 pEventData: pointer to the event information structure
26422
26423 @see
26424 @return Result of the function call
26425*/
26426WDI_Status
26427WDI_PackUpdateScanParamsReqEx
26428(
26429 WDI_ControlBlockType* pWDICtx,
26430 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26431 wpt_uint8** ppSendBuffer,
26432 wpt_uint16* pSize
26433)
26434{
26435 wpt_uint8* pSendBuffer = NULL;
26436 wpt_uint16 usDataOffset = 0;
26437 wpt_uint16 usSendSize = 0;
26438 tUpdateScanParamsEx updateScanParams = {0};
26439
26440
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026441 /*-----------------------------------------------------------------------
26442 Get message buffer
26443 -----------------------------------------------------------------------*/
26444 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26445 sizeof(updateScanParams),
26446 &pSendBuffer, &usDataOffset, &usSendSize))||
26447 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26448 {
26449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026450 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026451 pwdiUpdateScanParams);
26452 WDI_ASSERT(0);
26453 return WDI_STATUS_E_FAILURE;
26454 }
26455
26456 //
26457 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26458 //
26459
26460 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26461 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26462
26463 updateScanParams.ucChannelCount =
26464 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26465 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26466 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26467 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26468
26469 wpalMemoryCopy( updateScanParams.aChannels,
26470 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26471 updateScanParams.ucChannelCount);
26472
26473
26474 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26475 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26476 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26477 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26478 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26479
26480 wpalMemoryCopy( pSendBuffer+usDataOffset,
26481 &updateScanParams,
26482 sizeof(updateScanParams));
26483
26484 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26485 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26486
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026487 /*Set the output values*/
26488 *ppSendBuffer = pSendBuffer;
26489 *pSize = usSendSize;
26490
26491 return WDI_STATUS_SUCCESS;
26492}
26493
26494/**
26495 @brief Process Update Scan Params function
26496
26497 @param pWDICtx: pointer to the WLAN DAL context
26498 pEventData: pointer to the event information structure
26499
26500 @see
26501 @return Result of the function call
26502*/
26503WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026504WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026505(
Jeff Johnson295189b2012-06-20 16:38:30 -070026506 WDI_ControlBlockType* pWDICtx,
26507 WDI_EventInfoType* pEventData
26508)
26509{
26510 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26511 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026513 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026514 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026515
26516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026518 -------------------------------------------------------------------------*/
26519 if (( NULL == pEventData ) ||
26520 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26521 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26522 {
26523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026527 }
26528
26529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26530 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026531
26532 //
26533 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26534 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026535 if ( pWDICtx->wlanVersion.revision < 1 )
26536 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026537 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026538 &pSendBuffer, &usSendSize);
26539 }
26540 else
26541 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026542 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26543 &pSendBuffer, &usSendSize);
26544 }
26545
26546 if(WDI_STATUS_SUCCESS != wdiStatus)
26547 {
26548 //memory allocation failed
26549 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026550 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026551
Jeff Johnson295189b2012-06-20 16:38:30 -070026552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026553 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026554 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026555 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026556 wdiUpdateScanParamsCb, pEventData->pUserData,
26557 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026558}
26559
26560/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026561 @brief Process Update Channel Params function
26562
26563 @param pWDICtx: pointer to the WLAN DAL context
26564 pEventData: pointer to the event information structure
26565
26566 @see
26567 @return Result of the function call
26568*/
26569WDI_Status
26570WDI_ProcessUpdateChannelParamsReq
26571(
26572 WDI_ControlBlockType* pWDICtx,
26573 WDI_EventInfoType* pEventData
26574)
26575{
26576 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26577 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26578 wpt_uint8* pSendBuffer = NULL;
26579 wpt_uint16 usDataOffset = 0;
26580 wpt_uint16 usSendSize = 0;
26581 tUpdateChannelReqType *updateChannelParams;
26582 wpt_uint32 usUpdateChanParamSize;
26583 wpt_uint8 num_channels = 0;
26584
26585 /*-------------------------------------------------------------------------
26586 Sanity check
26587 -------------------------------------------------------------------------*/
26588 if (( NULL == pEventData ) ||
26589 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26590 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26591 {
26592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26593 "%s: Invalid parameters", __func__);
26594 WDI_ASSERT(0);
26595 return WDI_STATUS_E_FAILURE;
26596 }
26597 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026598 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026599
26600 /*-----------------------------------------------------------------------
26601 Get message buffer
26602 -----------------------------------------------------------------------*/
26603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26604 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26605 &pSendBuffer, &usDataOffset, &usSendSize))||
26606 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26607 {
26608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26609 "Unable to get send buffer in Update Channel Params req %p",
26610 pwdiUpdateChanListParams);
26611 WDI_ASSERT(0);
26612 return WDI_STATUS_E_FAILURE;
26613 }
26614 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26615
26616 updateChannelParams->numChan = num_channels;
26617 wpalMemoryCopy(&updateChannelParams->chanParam,
26618 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26619 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26620
26621 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26622 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26623
26624 /*-------------------------------------------------------------------------
26625 Send Update channel request to fw
26626 -------------------------------------------------------------------------*/
26627 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26628 wdiUpdateChanParamsCb, pEventData->pUserData,
26629 WDI_UPDATE_CHAN_RESP);
26630}
26631
26632/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026633 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026634
26635 @param pWDICtx: pointer to the WLAN DAL context
26636 pEventData: pointer to the event information structure
26637
Jeff Johnson295189b2012-06-20 16:38:30 -070026638 @see
26639 @return Result of the function call
26640*/
26641WDI_Status
26642WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026643(
Jeff Johnson295189b2012-06-20 16:38:30 -070026644 WDI_ControlBlockType* pWDICtx,
26645 WDI_EventInfoType* pEventData
26646)
26647{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026648 WDI_LowLevelIndType wdiInd;
26649 tpPrefNetwFoundParams pNetwFoundParams;
26650 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026651
26652
26653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026655 -------------------------------------------------------------------------*/
26656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26657 ( NULL == pEventData->pEventData ))
26658 {
26659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026661 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026663 }
26664
26665 /*-------------------------------------------------------------------------
26666 Extract indication and send it to UMAC
26667 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026668 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26669
26670 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26671 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26672 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26673
26674 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26675 {
26676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26677 "%s: fail to allocate memory", __func__);
26678 return WDI_STATUS_MEM_FAILURE;
26679 }
26680
26681 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26682 (pNetwFoundParams->ssId.length < 32 )?
26683 pNetwFoundParams->ssId.length : 32;
26684 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26685 pNetwFoundParams->ssId.ssId,
26686 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26687 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26688 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26689 pNetwFoundParams->frameLength;
26690 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26691 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26692 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026693
26694 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026695 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026696
Jeff Johnson295189b2012-06-20 16:38:30 -070026697 // DEBUG
26698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026699 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026700 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026701 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026702 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026703 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026704 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26705
ltimariub77f24b2013-01-24 18:54:33 -080026706 if ( pWDICtx->wdiLowLevelIndCB )
26707 {
26708 /*Notify UMAC*/
26709 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26710 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026711
26712 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026713}
26714
26715/**
26716 @brief Process PNO Rsp function (called when a
26717 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026718
26719 @param pWDICtx: pointer to the WLAN DAL context
26720 pEventData: pointer to the event information structure
26721
Jeff Johnson295189b2012-06-20 16:38:30 -070026722 @see
26723 @return Result of the function call
26724*/
26725WDI_Status
26726WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026727(
Jeff Johnson295189b2012-06-20 16:38:30 -070026728 WDI_ControlBlockType* pWDICtx,
26729 WDI_EventInfoType* pEventData
26730)
26731{
26732 WDI_Status wdiStatus;
26733 eHalStatus halStatus;
26734 WDI_PNOScanCb wdiPNOScanCb = NULL;
26735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26736
26737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026739 -------------------------------------------------------------------------*/
26740 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26741 ( NULL == pEventData->pEventData ))
26742 {
26743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026744 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026747 }
26748
26749
Jeff Johnsone7245742012-09-05 17:12:55 -070026750 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026751
26752 /*-------------------------------------------------------------------------
26753 Extract response and send it to UMAC
26754 -------------------------------------------------------------------------*/
26755 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026756 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026757
26758 /*Notify UMAC*/
26759 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26760
Jeff Johnsone7245742012-09-05 17:12:55 -070026761 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026762}/*WDI_ProcessSetPreferredNetworkRsp*/
26763
26764/**
26765 @brief Process RSSI Filter Rsp function (called when a
26766 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026767
26768 @param pWDICtx: pointer to the WLAN DAL context
26769 pEventData: pointer to the event information structure
26770
Jeff Johnson295189b2012-06-20 16:38:30 -070026771 @see
26772 @return Result of the function call
26773*/
26774WDI_Status
26775WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026776(
Jeff Johnson295189b2012-06-20 16:38:30 -070026777 WDI_ControlBlockType* pWDICtx,
26778 WDI_EventInfoType* pEventData
26779)
26780{
26781 WDI_Status wdiStatus;
26782 eHalStatus halStatus;
26783 WDI_RssiFilterCb wdiRssiFilterCb;
26784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26785
26786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026788 -------------------------------------------------------------------------*/
26789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26790 ( NULL == pEventData->pEventData ))
26791 {
26792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026796 }
26797
Jeff Johnsone7245742012-09-05 17:12:55 -070026798 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026799
26800 /*-------------------------------------------------------------------------
26801 Extract response and send it to UMAC
26802 -------------------------------------------------------------------------*/
26803 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026804 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026805
26806 /*Notify UMAC*/
26807 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26808
Jeff Johnsone7245742012-09-05 17:12:55 -070026809 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026810}/*WDI_ProcessSetRssiFilterRsp*/
26811
26812/**
26813 @brief Process Update Scan Params Rsp function (called when a
26814 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026815
26816 @param pWDICtx: pointer to the WLAN DAL context
26817 pEventData: pointer to the event information structure
26818
Jeff Johnson295189b2012-06-20 16:38:30 -070026819 @see
26820 @return Result of the function call
26821*/
26822WDI_Status
26823WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026824(
Jeff Johnson295189b2012-06-20 16:38:30 -070026825 WDI_ControlBlockType* pWDICtx,
26826 WDI_EventInfoType* pEventData
26827)
26828{
26829 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026830 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026831 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026832 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26834
26835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026837 -------------------------------------------------------------------------*/
26838 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26839 ( NULL == pEventData->pEventData ))
26840 {
26841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026845 }
26846
26847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026848 "%s: Process UPD scan params ptr : %p",
26849 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026850
Jeff Johnsone7245742012-09-05 17:12:55 -070026851 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026852
26853 /*-------------------------------------------------------------------------
26854 Extract response and send it to UMAC
26855 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026856 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26857 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026858 sizeof(halUpdScanParams.status));
26859
26860 uStatus = halUpdScanParams.status;
26861
26862 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026863 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026864
26865 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026866 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026867
Jeff Johnsone7245742012-09-05 17:12:55 -070026868 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026869
26870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026871 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026872 halUpdScanParams.status);
26873
26874 /*Notify UMAC*/
26875 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26876
Jeff Johnsone7245742012-09-05 17:12:55 -070026877 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026878}
26879#endif // FEATURE_WLAN_SCAN_PNO
26880
26881#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026882WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026883WDI_8023MulticastListReq
26884(
26885 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26886 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26887 void* pUserData
26888)
26889{
26890 WDI_EventInfoType wdiEventData;
26891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26892
26893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026894 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026895
26896 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026897 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026898 ------------------------------------------------------------------------*/
26899 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26900 {
26901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26902 "WDI API call before module is initialized - Fail request");
26903
Jeff Johnsone7245742012-09-05 17:12:55 -070026904 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026905 }
26906
26907 /*------------------------------------------------------------------------
26908 Fill in Event data and post to the Main FSM
26909 ------------------------------------------------------------------------*/
26910 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026911 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026912 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026913 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026914 wdiEventData.pUserData = pUserData;
26915
26916 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26917}
26918
Jeff Johnsone7245742012-09-05 17:12:55 -070026919WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026920WDI_ReceiveFilterSetFilterReq
26921(
26922 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26923 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26924 void* pUserData
26925)
26926{
26927 WDI_EventInfoType wdiEventData;
26928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26929
26930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026931 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026932
26933 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026934 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026935 ------------------------------------------------------------------------*/
26936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26937 {
26938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26939 "WDI API call before module is initialized - Fail request");
26940
Jeff Johnsone7245742012-09-05 17:12:55 -070026941 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026942 }
26943
26944 /*------------------------------------------------------------------------
26945 Fill in Event data and post to the Main FSM
26946 ------------------------------------------------------------------------*/
26947 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026948 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26949 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026950 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26951 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026952 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026953 wdiEventData.pUserData = pUserData;
26954
26955
26956 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26957}
26958
Jeff Johnsone7245742012-09-05 17:12:55 -070026959WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026960WDI_FilterMatchCountReq
26961(
26962 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26963 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26964 void* pUserData
26965)
26966{
26967 WDI_EventInfoType wdiEventData;
26968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26969
26970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026971 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026972
26973 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026974 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026975 ------------------------------------------------------------------------*/
26976 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26977 {
26978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26979 "WDI API call before module is initialized - Fail request");
26980
Jeff Johnsone7245742012-09-05 17:12:55 -070026981 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026982 }
26983
26984 /*------------------------------------------------------------------------
26985 Fill in Event data and post to the Main FSM
26986 ------------------------------------------------------------------------*/
26987 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026988 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026989 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026990 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026991 wdiEventData.pUserData = pUserData;
26992
26993
26994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26995}
26996
Jeff Johnsone7245742012-09-05 17:12:55 -070026997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026998WDI_ReceiveFilterClearFilterReq
26999(
27000 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27001 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27002 void* pUserData
27003)
27004{
27005 WDI_EventInfoType wdiEventData;
27006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27007
27008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027009 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027010
27011 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027012 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027013 ------------------------------------------------------------------------*/
27014 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27015 {
27016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27017 "WDI API call before module is initialized - Fail request");
27018
Jeff Johnsone7245742012-09-05 17:12:55 -070027019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027020 }
27021
27022 /*------------------------------------------------------------------------
27023 Fill in Event data and post to the Main FSM
27024 ------------------------------------------------------------------------*/
27025 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027026 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027027 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027028 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027029 wdiEventData.pUserData = pUserData;
27030
27031
27032 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27033}
27034
27035/**
27036 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027037
27038 @param pWDICtx: pointer to the WLAN DAL context
27039 pEventData: pointer to the event information structure
27040
Jeff Johnson295189b2012-06-20 16:38:30 -070027041 @see
27042 @return Result of the function call
27043*/
27044WDI_Status
27045WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027046(
Jeff Johnson295189b2012-06-20 16:38:30 -070027047 WDI_ControlBlockType* pWDICtx,
27048 WDI_EventInfoType* pEventData
27049)
27050{
27051 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27052 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027053 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027054 wpt_uint16 usDataOffset = 0;
27055 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027056 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027057 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027058 wpt_uint8 ucCurrentBSSSesIdx = 0;
27059 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027060
27061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027062 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027063
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027064 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27065 if( NULL == pRcvFltMcAddrListType )
27066 {
27067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27068 "Failed to alloc in WDI_Process8023MulticastListReq");
27069 return WDI_STATUS_E_FAILURE;
27070 }
27071
Jeff Johnson295189b2012-06-20 16:38:30 -070027072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027073 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027074 -------------------------------------------------------------------------*/
27075 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027076 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027077 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027078 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027079 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27080 {
27081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027082 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027083 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027085 return WDI_STATUS_E_FAILURE;
27086 }
27087
27088 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27089 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27090 &pBSSSes);
27091 if ( NULL == pBSSSes )
27092 {
27093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027094 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027095 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027097 }
27098
27099 /*-----------------------------------------------------------------------
27100 Get message buffer
27101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27103 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027104 sizeof(tHalRcvFltMcAddrListType),
27105 &pSendBuffer, &usDataOffset, &usSendSize))||
27106 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27107 {
27108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27109 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027110 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027111 pEventData, pwdiFltPktSetMcListReqParamsType,
27112 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027113 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027116 }
27117
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027118 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027119 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027120 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027121 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027122 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027123 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27124 sizeof(tSirMacAddr));
27125 }
27126
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027127 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027128 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027129 pRcvFltMcAddrListType,
27130 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027131
27132 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027133 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027134
27135
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027136 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027138 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027141 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027142 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027143}
27144
27145/**
27146 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027147
27148 @param pWDICtx: pointer to the WLAN DAL context
27149 pEventData: pointer to the event information structure
27150
Jeff Johnson295189b2012-06-20 16:38:30 -070027151 @see
27152 @return Result of the function call
27153*/
27154WDI_Status
27155WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027156(
Jeff Johnson295189b2012-06-20 16:38:30 -070027157 WDI_ControlBlockType* pWDICtx,
27158 WDI_EventInfoType* pEventData
27159)
27160{
27161 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27162 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027164 wpt_uint16 usDataOffset = 0;
27165 wpt_uint16 usSendSize = 0;
27166 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027167 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027168 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027169 wpt_uint8 ucCurrentBSSSesIdx = 0;
27170 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027171 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27172 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027173
27174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027175 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027176
27177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027179 -------------------------------------------------------------------------*/
27180 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027181 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027182 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027183 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027184 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27185 {
27186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027189 return WDI_STATUS_E_FAILURE;
27190 }
27191
27192 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27193 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27194 &pBSSSes);
27195 if ( NULL == pBSSSes )
27196 {
27197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027198 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027200 }
27201
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027202 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27203 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027204
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027205 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27206 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27207 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27208
27209 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27210 usSessRcvPktFilterCfgSize);
27211
27212 if(NULL == pSessRcvPktFilterCfg)
27213 {
27214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27215 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027216 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027217 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027218 WDI_ASSERT(0);
27219 return WDI_STATUS_E_FAILURE;
27220 }
27221
27222 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27223
27224 /*-----------------------------------------------------------------------
27225 Get message buffer
27226 -----------------------------------------------------------------------*/
27227
27228 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27229 usSessRcvPktFilterCfgSize,
27230 &pSendBuffer, &usDataOffset, &usSendSize))||
27231 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27232 {
27233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27234 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027235 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027236 pEventData, pwdiSetRcvPktFilterReqInfo,
27237 wdiReceiveFilterSetFilterCb);
27238 WDI_ASSERT(0);
27239 wpalMemoryFree(pSessRcvPktFilterCfg);
27240 return WDI_STATUS_E_FAILURE;
27241 }
27242
27243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027244 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027245 usSendSize,pSessRcvPktFilterCfg);
27246
27247 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27248 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27249 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27250 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27251
27252 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27253
27254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27255 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27256 pSessRcvPktFilterCfg->filterType);
27257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27258 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27259 pSessRcvPktFilterCfg->coleasceTime);
27260
27261 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27262 {
27263 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27264 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27265 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27266 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27267 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27268 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27269 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27270 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27271
27272 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27273 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27274 8);
27275 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27276 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27277 8);
27278
27279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027280 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027281 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27282 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27283
27284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027285 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027286 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27287 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27288
27289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027290 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027291 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27292 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27293 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27294 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27295 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27296 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27297
27298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027299 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027300 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27301 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27302 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27303 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27304 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27305 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27306 }
27307
27308 wpalMemoryCopy( pSendBuffer+usDataOffset,
27309 pSessRcvPktFilterCfg,
27310 usSessRcvPktFilterCfgSize);
27311
27312
27313 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27314 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27315
27316 wpalMemoryFree(pSessRcvPktFilterCfg);
27317
27318 }
27319 /*If SLM_SESSIONIZATION is not supported then do this */
27320 else
27321 {
27322 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27323 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27324 * sizeof(tHalRcvPktFilterParams));
27325
27326 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027327 usRcvPktFilterCfgSize);
27328
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027329 if(NULL == pRcvPktFilterCfg)
27330 {
27331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27332 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027333 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027334 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027335 WDI_ASSERT(0);
27336 return WDI_STATUS_E_FAILURE;
27337 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027338
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027339 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027340
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027341 /*-----------------------------------------------------------------------
27342 Get message buffer
27343 -----------------------------------------------------------------------*/
27344 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027345 usRcvPktFilterCfgSize,
27346 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027347 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27348 {
27349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027350 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027351 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027352 pEventData, pwdiSetRcvPktFilterReqInfo,
27353 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027354 WDI_ASSERT(0);
27355 wpalMemoryFree(pRcvPktFilterCfg);
27356 return WDI_STATUS_E_FAILURE;
27357 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027358
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027360 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027361 usSendSize,usRcvPktFilterCfgSize);
27362
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027363 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27364 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27365 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27366 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027367
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027369 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027370 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027372 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027373 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027374
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027375 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27376 {
27377 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27378 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27379 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27380 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27381 pRcvPktFilterCfg->paramsData[i].dataOffset =
27382 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27383 pRcvPktFilterCfg->paramsData[i].dataLength =
27384 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027385
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027386 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027387 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27388 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027389 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027390 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27391 8);
27392
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027394 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027395 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027396 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27397
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027399 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027400 pRcvPktFilterCfg->paramsData[i].dataOffset,
27401 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027402
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027404 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027405 pRcvPktFilterCfg->paramsData[i].compareData[0],
27406 pRcvPktFilterCfg->paramsData[i].compareData[1],
27407 pRcvPktFilterCfg->paramsData[i].compareData[2],
27408 pRcvPktFilterCfg->paramsData[i].compareData[3],
27409 pRcvPktFilterCfg->paramsData[i].compareData[4],
27410 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027411
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027413 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027414 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27415 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27416 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27417 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27418 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27419 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27420 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027421
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027422 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027423 pRcvPktFilterCfg,
27424 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027425
27426
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027427 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27428 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027429
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027431 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027432 wpalMemoryFree(pRcvPktFilterCfg);
27433 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027435 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027436 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027437 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027438 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027439 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027440}
27441
27442/**
27443 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027444
27445 @param pWDICtx: pointer to the WLAN DAL context
27446 pEventData: pointer to the event information structure
27447
Jeff Johnson295189b2012-06-20 16:38:30 -070027448 @see
27449 @return Result of the function call
27450*/
27451WDI_Status
27452WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027453(
Jeff Johnson295189b2012-06-20 16:38:30 -070027454 WDI_ControlBlockType* pWDICtx,
27455 WDI_EventInfoType* pEventData
27456)
27457{
27458 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27459 NULL;
27460 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27461 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027462 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027463 wpt_uint16 usDataOffset = 0;
27464 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027465 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27466 wpt_uint8 ucCurrentBSSSesIdx = 0;
27467 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027468
27469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027470 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027471
27472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027473 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027474 -------------------------------------------------------------------------*/
27475 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027476 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027477 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027478 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027479 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27480 {
27481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027485 }
27486
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027487 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27488 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27489 &pBSSSes);
27490 if ( NULL == pBSSSes )
27491 {
27492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027493 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027494 return WDI_STATUS_E_FAILURE;
27495 }
27496
Jeff Johnson295189b2012-06-20 16:38:30 -070027497 /*-----------------------------------------------------------------------
27498 Get message buffer
27499 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027500 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27501 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027502 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027503 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027504 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027505 {
27506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27507 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027508 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027509 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27510 wdiFilterMatchCountCb);
27511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027513 }
27514
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027515 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27516 wpalMemoryCopy( pSendBuffer+usDataOffset,
27517 &rcvFltPktMatchCntReqParam,
27518 sizeof(rcvFltPktMatchCntReqParam));
27519
Jeff Johnson295189b2012-06-20 16:38:30 -070027520 //
27521 // Don't need to fill send buffer other than header
27522 //
27523 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027524 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027525
27526
27527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027528 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027529 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027530 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27531 wdiFilterMatchCountCb,
27532 pEventData->pUserData,
27533 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027534}
27535
27536/**
27537 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027538
27539 @param pWDICtx: pointer to the WLAN DAL context
27540 pEventData: pointer to the event information structure
27541
Jeff Johnson295189b2012-06-20 16:38:30 -070027542 @see
27543 @return Result of the function call
27544*/
27545WDI_Status
27546WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027547(
Jeff Johnson295189b2012-06-20 16:38:30 -070027548 WDI_ControlBlockType* pWDICtx,
27549 WDI_EventInfoType* pEventData
27550)
Jeff Johnsone7245742012-09-05 17:12:55 -070027551{
Jeff Johnson295189b2012-06-20 16:38:30 -070027552 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27553 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027554 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027555 wpt_uint16 usDataOffset = 0;
27556 wpt_uint16 usSendSize = 0;
27557 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027558 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027559 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027560
27561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027562 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027563
27564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027565 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027566 -------------------------------------------------------------------------*/
27567 if (( NULL == pEventData ) ||
27568 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27569 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027570 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027571 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27572 {
27573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027576 return WDI_STATUS_E_FAILURE;
27577 }
27578
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027579 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027580 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27581 &pBSSSes);
27582 if ( NULL == pBSSSes )
27583 {
27584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027585 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027587 }
27588
27589 /*-----------------------------------------------------------------------
27590 Get message buffer
27591 -----------------------------------------------------------------------*/
27592 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027593 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027594 sizeof(tHalRcvFltPktClearParam),
27595 &pSendBuffer, &usDataOffset, &usSendSize))||
27596 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27597 {
27598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27599 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027600 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027601 pEventData, pwdiRcvFltPktClearReqParamsType,
27602 wdiRcvFltPktClearFilterCb);
27603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027605 }
27606
27607
27608 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027609 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027610 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027611 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027612
Jeff Johnsone7245742012-09-05 17:12:55 -070027613 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27614 wpalMemoryCopy( pSendBuffer+usDataOffset,
27615 &rcvFltPktClearParam,
27616 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027617
27618 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027619 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027620
27621
27622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027623 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027624 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027625 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027626 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027627 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027628}
27629
27630/**
27631 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027632
27633 @param pWDICtx: pointer to the WLAN DAL context
27634 pEventData: pointer to the event information structure
27635
Jeff Johnson295189b2012-06-20 16:38:30 -070027636 @see
27637 @return Result of the function call
27638*/
27639WDI_Status
27640WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027641(
Jeff Johnson295189b2012-06-20 16:38:30 -070027642 WDI_ControlBlockType* pWDICtx,
27643 WDI_EventInfoType* pEventData
27644)
27645{
Jeff Johnson295189b2012-06-20 16:38:30 -070027646 eHalStatus halStatus;
27647 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027648 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27649 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27651
27652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027653 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027654
27655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027656 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027657 -------------------------------------------------------------------------*/
27658 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27659 ( NULL == pEventData->pEventData ))
27660 {
27661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027662 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027664 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027665 }
27666
Jeff Johnsone7245742012-09-05 17:12:55 -070027667 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027668
27669 /*-------------------------------------------------------------------------
27670 Extract response and send it to UMAC
27671 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027672 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27673 {
27674 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27675 pEventData->pEventData,
27676 sizeof(halRcvFltPktSetMcListRsp));
27677
27678 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27679 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27680 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27681 halRcvFltPktSetMcListRsp.bssIdx;
27682 }
27683 else
27684 {
27685 halStatus = *((eHalStatus*)pEventData->pEventData);
27686 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27687 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027688
27689 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027690 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027691
Jeff Johnsone7245742012-09-05 17:12:55 -070027692 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027693}
27694
27695/**
27696 @brief Process Set Rsp function (called when a
27697 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027698
27699 @param pWDICtx: pointer to the WLAN DAL context
27700 pEventData: pointer to the event information structure
27701
Jeff Johnson295189b2012-06-20 16:38:30 -070027702 @see
27703 @return Result of the function call
27704*/
27705WDI_Status
27706WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027707(
Jeff Johnson295189b2012-06-20 16:38:30 -070027708 WDI_ControlBlockType* pWDICtx,
27709 WDI_EventInfoType* pEventData
27710)
27711{
Jeff Johnson295189b2012-06-20 16:38:30 -070027712 eHalStatus halStatus;
27713 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027714 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27715 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27717
27718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027719 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027720
27721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027723 -------------------------------------------------------------------------*/
27724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27725 ( NULL == pEventData->pEventData ))
27726 {
27727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027731 }
27732
27733 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027734 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027735
27736 /*-------------------------------------------------------------------------
27737 Extract response and send it to UMAC
27738 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027739 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27740 {
27741 wpalMemoryCopy( &halSetPktFilterRspParams,
27742 pEventData->pEventData,
27743 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027744
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027745 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27746 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27747 }
27748 else
27749 {
27750 halStatus = *((eHalStatus*)pEventData->pEventData);
27751 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27752 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027753 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027754 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027755
Jeff Johnsone7245742012-09-05 17:12:55 -070027756 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027757}
27758
27759/**
27760 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027761
27762 @param pWDICtx: pointer to the WLAN DAL context
27763 pEventData: pointer to the event information structure
27764
Jeff Johnson295189b2012-06-20 16:38:30 -070027765 @see
27766 @return Result of the function call
27767*/
27768WDI_Status
27769WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027770(
Jeff Johnson295189b2012-06-20 16:38:30 -070027771 WDI_ControlBlockType* pWDICtx,
27772 WDI_EventInfoType* pEventData
27773)
27774{
Jeff Johnson295189b2012-06-20 16:38:30 -070027775 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027776 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027777 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27778 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027779
27780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27781
27782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027783 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027784
27785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027787 -------------------------------------------------------------------------*/
27788 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27789 ( NULL == pEventData->pEventData ))
27790 {
27791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027795 }
27796
Jeff Johnsone7245742012-09-05 17:12:55 -070027797 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027798
27799 /*-------------------------------------------------------------------------
27800 Extract response and send it to UMAC
27801 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027802 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27803 {
27804 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27805 pEventData->pEventData,
27806 sizeof(halRcvFltrPktMatachRsp));
27807
27808 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27809 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27810 }
27811 else
27812 {
27813 halStatus = *((eHalStatus*)pEventData->pEventData);
27814 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27815 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027816
27817 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027818 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027819
Jeff Johnsone7245742012-09-05 17:12:55 -070027820 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027821}
27822
27823/**
27824 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027825
27826 @param pWDICtx: pointer to the WLAN DAL context
27827 pEventData: pointer to the event information structure
27828
Jeff Johnson295189b2012-06-20 16:38:30 -070027829 @see
27830 @return Result of the function call
27831*/
27832WDI_Status
27833WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027834(
Jeff Johnson295189b2012-06-20 16:38:30 -070027835 WDI_ControlBlockType* pWDICtx,
27836 WDI_EventInfoType* pEventData
27837)
27838{
Jeff Johnson295189b2012-06-20 16:38:30 -070027839 eHalStatus halStatus;
27840 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027841 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27842 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27844
27845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027846 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027847
27848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027850 -------------------------------------------------------------------------*/
27851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27852 ( NULL == pEventData->pEventData ))
27853 {
27854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027858 }
27859
27860 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027861 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027862
27863 /*-------------------------------------------------------------------------
27864 Extract response and send it to UMAC
27865 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027866 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27867 {
27868 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27869 pEventData->pEventData,
27870 sizeof(halRcvFltPktClearRspMsg));
27871
27872 wdiRcvFltPktClearRspParamsType.wdiStatus =
27873 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27874 wdiRcvFltPktClearRspParamsType.bssIdx =
27875 halRcvFltPktClearRspMsg.bssIdx;
27876 }
27877 else
27878 {
27879 halStatus = *((eHalStatus*)pEventData->pEventData);
27880 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27881 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027882
27883 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027884 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027885
Jeff Johnsone7245742012-09-05 17:12:55 -070027886 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027887}
27888#endif // WLAN_FEATURE_PACKET_FILTERING
27889
27890/**
27891 @brief Process Shutdown Rsp function
27892 There is no shutdown response comming from HAL
27893 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027894
Jeff Johnson295189b2012-06-20 16:38:30 -070027895 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027896 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027897
27898 @see
27899 @return Result of the function call
27900*/
27901WDI_Status
27902WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027903(
Jeff Johnson295189b2012-06-20 16:38:30 -070027904 WDI_ControlBlockType* pWDICtx,
27905 WDI_EventInfoType* pEventData
27906)
27907{
27908 /*There is no shutdown response comming from HAL - function just kept for
27909 simmetry */
27910 WDI_ASSERT(0);
27911 return WDI_STATUS_SUCCESS;
27912}/*WDI_ProcessShutdownRsp*/
27913
27914/**
27915 @brief WDI_SetPowerParamsReq
27916
Jeff Johnsone7245742012-09-05 17:12:55 -070027917 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027918 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027919
Jeff Johnson295189b2012-06-20 16:38:30 -070027920 wdiPowerParamsCb: callback for passing back the response
27921 of the Set Power Params operation received from the
27922 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027923
Jeff Johnson295189b2012-06-20 16:38:30 -070027924 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027925 callback
27926
Jeff Johnson295189b2012-06-20 16:38:30 -070027927 @return Result of the function call
27928*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027929WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027930WDI_SetPowerParamsReq
27931(
27932 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27933 WDI_SetPowerParamsCb wdiPowerParamsCb,
27934 void* pUserData
27935)
27936{
27937 WDI_EventInfoType wdiEventData;
27938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27939
27940 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027941 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027942 ------------------------------------------------------------------------*/
27943 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27944 {
27945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27946 "WDI API call before module is initialized - Fail request");
27947
Jeff Johnsone7245742012-09-05 17:12:55 -070027948 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027949 }
27950
27951 /*------------------------------------------------------------------------
27952 Fill in Event data and post to the Main FSM
27953 ------------------------------------------------------------------------*/
27954 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027955 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027956 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027957 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027958 wdiEventData.pUserData = pUserData;
27959
27960 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27961}/*WDI_SetPowerParamsReq*/
27962
27963/**
27964 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027965
27966 @param pWDICtx: pointer to the WLAN DAL context
27967 pEventData: pointer to the event information structure
27968
Jeff Johnson295189b2012-06-20 16:38:30 -070027969 @see
27970 @return Result of the function call
27971*/
27972WDI_Status
27973WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027974(
Jeff Johnson295189b2012-06-20 16:38:30 -070027975 WDI_ControlBlockType* pWDICtx,
27976 WDI_EventInfoType* pEventData
27977)
27978{
27979 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27980 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027981 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027982 wpt_uint16 usDataOffset = 0;
27983 wpt_uint16 usSendSize = 0;
27984 tSetPowerParamsType powerParams;
27985
27986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027988 -------------------------------------------------------------------------*/
27989 if (( NULL == pEventData ) ||
27990 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27991 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27992 {
27993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027997 }
27998
27999 /*-----------------------------------------------------------------------
28000 Get message buffer
28001 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028002 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028003 sizeof(powerParams),
28004 &pSendBuffer, &usDataOffset, &usSendSize))||
28005 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28006 {
28007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028008 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028009 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28010 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028012 }
28013
28014 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028015 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028016 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28017
28018 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028019 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028020 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28021
28022 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028023 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028024 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28025
28026 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028027 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028028 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28029
28030 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028031 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028032 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28033
28034 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028035 powerParams.uBETInterval =
28036 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028037
Yue Mac24062f2013-05-13 17:01:29 -070028038 /* MAX LI for modulated DTIM */
28039 powerParams.uMaxLIModulatedDTIM =
28040 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028041
28042 wpalMemoryCopy( pSendBuffer+usDataOffset,
28043 &powerParams,
28044 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028045
28046 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028047 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028048
28049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028050 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28053 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028054}
28055
28056/**
28057 @brief Process Power Params Rsp function (called when a
28058 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028059
28060 @param pWDICtx: pointer to the WLAN DAL context
28061 pEventData: pointer to the event information structure
28062
Jeff Johnson295189b2012-06-20 16:38:30 -070028063 @see
28064 @return Result of the function call
28065*/
28066WDI_Status
28067WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028068(
Jeff Johnson295189b2012-06-20 16:38:30 -070028069 WDI_ControlBlockType* pWDICtx,
28070 WDI_EventInfoType* pEventData
28071)
28072{
28073 WDI_Status wdiStatus;
28074 eHalStatus halStatus;
28075 WDI_SetPowerParamsCb wdiPowerParamsCb;
28076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28077
28078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028080 -------------------------------------------------------------------------*/
28081 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28082 ( NULL == pEventData->pEventData ))
28083 {
28084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028088 }
28089
Jeff Johnsone7245742012-09-05 17:12:55 -070028090 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028091
28092 /*-------------------------------------------------------------------------
28093 Extract response and send it to UMAC
28094 -------------------------------------------------------------------------*/
28095 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028096 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028097
28098 /*Notify UMAC*/
28099 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28100
Jeff Johnsone7245742012-09-05 17:12:55 -070028101 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028102}/*WDI_ProcessSetPowerParamsRsp*/
28103
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028104/**
28105 @brief WDI_dhcpStartInd
28106 Host will send an event to the FW when DHCP is initiated
28107
28108 @param
28109 WDI_DHCPInd: DHCP Indication
28110 @see
28111 @return Result of the function call
28112*/
28113WDI_Status
28114WDI_dhcpStartInd
28115(
28116 WDI_DHCPInd *wdiDHCPInd
28117)
28118{
28119 WDI_EventInfoType wdiEventData;
28120
28121 /*------------------------------------------------------------------------
28122 Sanity Check
28123 ------------------------------------------------------------------------*/
28124 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28125 {
28126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28127 "WDI API call before module is initialized - Fail request");
28128
28129 return WDI_STATUS_E_NOT_ALLOWED;
28130 }
28131
28132 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28133 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028134 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028135 wdiEventData.pCBfnc = NULL;
28136 wdiEventData.pUserData = NULL;
28137
28138 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28139}
28140
28141
28142/**
28143 @brief WDI_dhcpStopInd
28144 Host will send an event to the FW when DHCP is completed
28145
28146 @param
28147 WDI_DHCPInd: DHCP Indication
28148 @see
28149 @return Result of the function call
28150*/
28151WDI_Status
28152WDI_dhcpStopInd
28153(
28154 WDI_DHCPInd *wdiDHCPInd
28155)
28156{
28157 WDI_EventInfoType wdiEventData;
28158
28159 /*------------------------------------------------------------------------
28160 Sanity Check
28161 ------------------------------------------------------------------------*/
28162 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28163 {
28164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28165 "WDI API call before module is initialized - Fail request");
28166
28167 return WDI_STATUS_E_NOT_ALLOWED;
28168 }
28169
28170 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28171 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028172 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028173 wdiEventData.pCBfnc = NULL;
28174 wdiEventData.pUserData = NULL;
28175
28176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28177}
28178
28179
28180/**
28181 @brief Process DHCP Start Indication message and post it to HAL
28182
28183 @param pWDICtx: pointer to the WLAN DAL context
28184 pEventData: pointer to the event information structure
28185
28186 @see
28187 @return Result of the function call
28188*/
28189WDI_Status
28190WDI_ProcessDHCPStartInd
28191(
28192 WDI_ControlBlockType* pWDICtx,
28193 WDI_EventInfoType* pEventData
28194)
28195{
28196 wpt_uint8* pSendBuffer = NULL;
28197 wpt_uint16 usDataOffset = 0;
28198 wpt_uint16 usSendSize = 0;
28199 wpt_uint16 usLen = 0;
28200 WDI_DHCPInd* pwdiDHCPInd = NULL;
28201 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028202 WDI_Status wdiStatus;
28203
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028204
28205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28206
28207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28208 "%s", __func__);
28209
28210 /*-------------------------------------------------------------------------
28211 Sanity check
28212 -------------------------------------------------------------------------*/
28213 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28214 {
28215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28216 "%s: Invalid parameters", __func__);
28217 WDI_ASSERT(0);
28218 return WDI_STATUS_E_FAILURE;
28219 }
28220 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28221 /*-----------------------------------------------------------------------
28222 Get message buffer
28223 -----------------------------------------------------------------------*/
28224
28225 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28226 WDI_DHCP_START_IND,
28227 sizeof(tDHCPInfo),
28228 &pSendBuffer, &usDataOffset, &usSendSize))||
28229 ( usSendSize < (usDataOffset + usLen )))
28230 {
28231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28232 "Unable to get send buffer in DHCP Start req %p ",
28233 pEventData);
28234 WDI_ASSERT(0);
28235 return WDI_STATUS_E_FAILURE;
28236 }
28237
Sandeep Puligillaee789512014-02-13 19:14:52 +053028238 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028239 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28240 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28241 WDI_MAC_ADDR_LEN);
28242
28243 pWDICtx->pReqStatusUserData = NULL;
28244 pWDICtx->pfncRspCB = NULL;
28245
28246 /*-------------------------------------------------------------------------
28247 Send DHCP Start Indication to HAL
28248 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028249 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28250 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028251}/*WDI_ProcessDHCPStartInd*/
28252
28253/**
28254 @brief Process DHCP Stop indication message and post it to HAL
28255
28256 @param pWDICtx: pointer to the WLAN DAL context
28257 pEventData: pointer to the event information structure
28258
28259 @see
28260 @return Result of the function call
28261*/
28262WDI_Status
28263WDI_ProcessDHCPStopInd
28264(
28265 WDI_ControlBlockType* pWDICtx,
28266 WDI_EventInfoType* pEventData
28267)
28268{
28269 wpt_uint8* pSendBuffer = NULL;
28270 wpt_uint16 usDataOffset = 0;
28271 wpt_uint16 usSendSize = 0;
28272 wpt_uint16 usLen = 0;
28273 WDI_DHCPInd* pwdiDHCPInd = NULL;
28274 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028275 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028276
28277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28278
28279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28280 "%s", __func__);
28281
28282 /*-------------------------------------------------------------------------
28283 Sanity check
28284 -------------------------------------------------------------------------*/
28285
28286 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28287 {
28288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28289 "%s: Invalid parameters", __func__);
28290 WDI_ASSERT(0);
28291 return WDI_STATUS_E_FAILURE;
28292 }
28293 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28294 /*-----------------------------------------------------------------------
28295 Get message buffer
28296 -----------------------------------------------------------------------*/
28297
28298 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28299 WDI_DHCP_STOP_IND,
28300 sizeof(tDHCPInfo),
28301 &pSendBuffer, &usDataOffset, &usSendSize))||
28302 ( usSendSize < (usDataOffset + usLen )))
28303 {
28304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28305 "Unable to get send buffer in DHCP Start req %p ",
28306 pEventData);
28307 WDI_ASSERT(0);
28308 return WDI_STATUS_E_FAILURE;
28309 }
28310
Sandeep Puligillaee789512014-02-13 19:14:52 +053028311 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028312 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28313 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28314 WDI_MAC_ADDR_LEN);
28315
28316 pWDICtx->pReqStatusUserData = NULL;
28317 pWDICtx->pfncRspCB = NULL;
28318 /*-------------------------------------------------------------------------
28319 Send DHCP Stop indication to HAL
28320 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028321 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28322 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028323
28324}/*WDI_ProcessDHCPStopInd*/
28325
28326
Jeff Johnson295189b2012-06-20 16:38:30 -070028327#ifdef WLAN_FEATURE_GTK_OFFLOAD
28328/**
28329 @brief WDI_GTKOffloadReq will be called when the upper MAC
28330 wants to set GTK Rekey Counter while in power save. Upon
28331 the call of this API the WLAN DAL will pack and send a
28332 HAL GTK offload request message to the lower RIVA
28333 sub-system if DAL is in state STARTED.
28334
28335 In state BUSY this request will be queued. Request won't
28336 be allowed in any other state.
28337
28338 WDI_PostAssocReq must have been called.
28339
28340 @param pwdiGtkOffloadParams: the GTK offload as specified
28341 by the Device Interface
28342
28343 wdiGtkOffloadCb: callback for passing back the response
28344 of the GTK offload operation received from the device
28345
28346 pUserData: user data will be passed back with the
28347 callback
28348
28349 @see WDI_PostAssocReq
28350 @return Result of the function call
28351*/
28352WDI_Status
28353WDI_GTKOffloadReq
28354(
28355 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28356 WDI_GtkOffloadCb wdiGtkOffloadCb,
28357 void* pUserData
28358)
28359{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028360 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28362
28363 /*------------------------------------------------------------------------
28364 Sanity Check
28365 ------------------------------------------------------------------------*/
28366 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28367 {
28368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28369 "WDI API call before module is initialized - Fail request");
28370
28371 return WDI_STATUS_E_NOT_ALLOWED;
28372 }
28373
28374 /*------------------------------------------------------------------------
28375 Fill in Event data and post to the Main FSM
28376 ------------------------------------------------------------------------*/
28377 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28378 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028379 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028380 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28381 wdiEventData.pUserData = pUserData;
28382
28383 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28384}
28385
28386
28387/**
28388 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28389 MAC wants to get GTK Rekey Counter while in power save.
28390 Upon the call of this API the WLAN DAL will pack and
28391 send a HAL GTK offload request message to the lower RIVA
28392 sub-system if DAL is in state STARTED.
28393
28394 In state BUSY this request will be queued. Request won't
28395 be allowed in any other state.
28396
28397 WDI_PostAssocReq must have been called.
28398
28399 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28400 Information Message as specified by the
28401 Device Interface
28402
28403 wdiGtkOffloadGetInfoCb: callback for passing back the
28404 response of the GTK offload operation received from the
28405 device
28406
28407 pUserData: user data will be passed back with the
28408 callback
28409
28410 @see WDI_PostAssocReq
28411 @return Result of the function call
28412*/
28413WDI_Status
28414WDI_GTKOffloadGetInfoReq
28415(
28416 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28417 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28418 void* pUserData
28419)
28420{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028421 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28423
28424 /*------------------------------------------------------------------------
28425 Sanity Check
28426 ------------------------------------------------------------------------*/
28427 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28428 {
28429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28430 "WDI API call before module is initialized - Fail request");
28431
28432 return WDI_STATUS_E_NOT_ALLOWED;
28433 }
28434
28435 /*------------------------------------------------------------------------
28436 Fill in Event data and post to the Main FSM
28437 ------------------------------------------------------------------------*/
28438 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28439 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28440 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28441 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28442 wdiEventData.pUserData = pUserData;
28443
28444 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28445}
28446
28447
28448/**
28449 @brief Process set GTK Offload Request function
28450
28451 @param pWDICtx: pointer to the WLAN DAL context
28452 pEventData: pointer to the event information structure
28453
28454 @see
28455 @return Result of the function call
28456*/
28457WDI_Status
28458WDI_ProcessGTKOffloadReq
28459(
28460 WDI_ControlBlockType* pWDICtx,
28461 WDI_EventInfoType* pEventData
28462)
28463{
28464 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28465 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28466 wpt_uint8* pSendBuffer = NULL;
28467 wpt_uint16 usDataOffset = 0;
28468 wpt_uint16 usSendSize = 0;
28469 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028470 wpt_uint8 ucCurrentSessionId = 0;
28471 WDI_BSSSessionType* pBSSSes = NULL;
28472
Jeff Johnson295189b2012-06-20 16:38:30 -070028473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28474
28475 /*-------------------------------------------------------------------------
28476 Sanity check
28477 -------------------------------------------------------------------------*/
28478 if (( NULL == pEventData ) ||
28479 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28480 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28481 {
28482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028483 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028484 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028485 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028486 }
28487
28488 /*-----------------------------------------------------------------------
28489 Get message buffer
28490 -----------------------------------------------------------------------*/
28491 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28492 sizeof(gtkOffloadReqParams),
28493 &pSendBuffer, &usDataOffset, &usSendSize))||
28494 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28495 {
28496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028497 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028498 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28499 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028500 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028501 }
28502
28503 //
28504 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28505 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028506 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28507 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28508 &pBSSSes);
28509 if ( NULL == pBSSSes )
28510 {
28511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028512 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028513 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028514 }
28515
28516 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28517
Jeff Johnson295189b2012-06-20 16:38:30 -070028518 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28519 // Copy KCK
28520 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28521 // Copy KEK
28522 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28523 // Copy KeyReplayCounter
28524 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28525
28526 wpalMemoryCopy( pSendBuffer+usDataOffset,
28527 &gtkOffloadReqParams,
28528 sizeof(gtkOffloadReqParams));
28529
28530 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28531 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28532
28533 /*-------------------------------------------------------------------------
28534 Send Get STA Request to HAL
28535 -------------------------------------------------------------------------*/
28536 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28537 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028538
28539fail:
28540 // Release the message buffer so we don't leak
28541 wpalMemoryFree(pSendBuffer);
28542
28543failRequest:
28544 //WDA should have failure check to avoid the memory leak
28545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028546}
28547
28548
28549/**
28550 @brief Process GTK Offload Get Information Request function
28551
28552 @param pWDICtx: pointer to the WLAN DAL context
28553 pEventData: pointer to the event information structure
28554
28555 @see
28556 @return Result of the function call
28557*/
28558WDI_Status
28559WDI_ProcessGTKOffloadGetInfoReq
28560(
28561 WDI_ControlBlockType* pWDICtx,
28562 WDI_EventInfoType* pEventData
28563)
28564{
28565 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28566 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28567 wpt_uint8* pSendBuffer = NULL;
28568 wpt_uint16 usDataOffset = 0;
28569 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028570 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28571 wpt_uint8 ucCurrentSessionId = 0;
28572 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028573
28574 /*-------------------------------------------------------------------------
28575 Sanity check
28576 -------------------------------------------------------------------------*/
28577 if (( NULL == pEventData ) ||
28578 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28579 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28580 {
28581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028582 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028583 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028584 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028585 }
28586
28587 /*-----------------------------------------------------------------------
28588 Get message buffer
28589 -----------------------------------------------------------------------*/
28590 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028591 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028592 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028593 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028594 {
28595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028596 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028597 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28598 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028599 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028600 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028601 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28602 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28603 &pBSSSes);
28604 if ( NULL == pBSSSes )
28605 {
28606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028607 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028608 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028609 }
28610 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028611
28612 //
28613 // Don't need to fill send buffer other than header
28614 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028615 wpalMemoryCopy( pSendBuffer+usDataOffset,
28616 &halGtkOffloadGetInfoReqParams,
28617 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028618
28619 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28620 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28621
28622 /*-------------------------------------------------------------------------
28623 Send Get STA Request to HAL
28624 -------------------------------------------------------------------------*/
28625 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28626 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028627fail:
28628 // Release the message buffer so we don't leak
28629 wpalMemoryFree(pSendBuffer);
28630
28631failRequest:
28632 //WDA should have failure check to avoid the memory leak
28633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028634}
28635
28636/**
28637 @brief Process host offload Rsp function (called when a
28638 response is being received over the bus from HAL)
28639
28640 @param pWDICtx: pointer to the WLAN DAL context
28641 pEventData: pointer to the event information structure
28642
28643 @see
28644 @return Result of the function call
28645*/
28646WDI_Status
28647WDI_ProcessGtkOffloadRsp
28648(
28649 WDI_ControlBlockType* pWDICtx,
28650 WDI_EventInfoType* pEventData
28651)
28652{
Jeff Johnson295189b2012-06-20 16:38:30 -070028653 eHalStatus halStatus;
28654 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028655 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28656 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028657
28658 /*-------------------------------------------------------------------------
28659 Sanity check
28660 -------------------------------------------------------------------------*/
28661 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28662 ( NULL == pEventData->pEventData))
28663 {
28664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028666 WDI_ASSERT(0);
28667 return WDI_STATUS_E_FAILURE;
28668 }
28669
Wilson Yang00256342013-10-10 23:13:38 -070028670 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28671
Jeff Johnson295189b2012-06-20 16:38:30 -070028672 /*-------------------------------------------------------------------------
28673 Extract response and send it to UMAC
28674 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028675 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28676 {
28677 wpalMemoryCopy( &halGtkOffloadRspParams,
28678 pEventData->pEventData,
28679 sizeof(halGtkOffloadRspParams));
28680
28681 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028682 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028683 wdiGtkOffloadRsparams.bssIdx =
28684 halGtkOffloadRspParams.bssIdx;
28685 }
28686 else
28687 {
28688 halStatus = *((eHalStatus*)pEventData->pEventData);
28689 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28690 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028691
28692 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028693 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028694
28695 return WDI_STATUS_SUCCESS;
28696}
28697
28698/**
28699 @brief Process GTK Offload Get Information Response function
28700
28701 @param pWDICtx: pointer to the WLAN DAL context
28702 pEventData: pointer to the event information structure
28703
28704 @see
28705 @return Result of the function call
28706*/
28707WDI_Status
28708WDI_ProcessGTKOffloadGetInfoRsp
28709(
28710 WDI_ControlBlockType* pWDICtx,
28711 WDI_EventInfoType* pEventData
28712)
28713{
Jeff Johnson295189b2012-06-20 16:38:30 -070028714 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028715 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028716 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28717 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028718 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028719
Jeff Johnson295189b2012-06-20 16:38:30 -070028720
28721 /*-------------------------------------------------------------------------
28722 Sanity check
28723 -------------------------------------------------------------------------*/
28724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28725 ( NULL == pEventData->pEventData ))
28726 {
28727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028729 WDI_ASSERT(0);
28730 return WDI_STATUS_E_FAILURE;
28731 }
28732
Wilson Yang00256342013-10-10 23:13:38 -070028733 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28734
28735 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028736 Extract response and send it to UMAC
28737 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028738 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28739 {
28740 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28741 pEventData->pEventData,
28742 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028743
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028744 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028745 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028746 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28747 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28748 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28749 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28750 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28751 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28752 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28753 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028754
28755 wpalMutexAcquire(&pWDICtx->wptMutex);
28756 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28757 &pBSSSes);
28758
28759 if ( NULL == pBSSSes )
28760 {
28761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28762 "Association sequence for this BSS does not exist or "
28763 "association no longer in progress - mysterious HAL response");
28764 wpalMutexRelease(&pWDICtx->wptMutex);
28765 return WDI_STATUS_E_NOT_ALLOWED;
28766 }
28767
28768 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28769 sizeof (wpt_macAddr));
28770 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028771 }
28772 else
28773 {
28774 halStatus = *((eHalStatus*)pEventData->pEventData);
28775 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28776 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028777 /*Notify UMAC*/
28778 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28779 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028780 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028781
28782 return WDI_STATUS_SUCCESS;
28783}
28784#endif // WLAN_FEATURE_GTK_OFFLOAD
28785
28786#ifdef WLAN_WAKEUP_EVENTS
28787WDI_Status
28788WDI_ProcessWakeReasonInd
28789(
28790 WDI_ControlBlockType* pWDICtx,
28791 WDI_EventInfoType* pEventData
28792)
28793{
28794 WDI_LowLevelIndType *pWdiInd;
28795 tpWakeReasonParams pWakeReasonParams;
28796 wpt_uint32 allocSize = 0;
28797
28798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028799 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028800
28801 /*-------------------------------------------------------------------------
28802 Sanity check
28803 -------------------------------------------------------------------------*/
28804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28805 ( NULL == pEventData->pEventData ))
28806 {
28807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028809 WDI_ASSERT( 0 );
28810 return WDI_STATUS_E_FAILURE;
28811 }
28812
28813 /*-------------------------------------------------------------------------
28814 Extract indication and send it to UMAC
28815 -------------------------------------------------------------------------*/
28816 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28817
28818 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28819
28820 //Allocate memory for WDI_WakeReasonIndType structure
28821 pWdiInd = wpalMemoryAllocate(allocSize) ;
28822
28823 if(NULL == pWdiInd)
28824 {
28825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028826 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028827 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028828 WDI_ASSERT(0);
28829 return WDI_STATUS_E_FAILURE;
28830 }
28831
28832 wpalMemoryZero(pWdiInd, allocSize);
28833
28834 /* Fill in the indication parameters*/
28835 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28836 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28837 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28838 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28839 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28840 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28841 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28842 &(pWakeReasonParams->aDataStart[0]),
28843 pWakeReasonParams->ulStoredDataLen);
28844
ltimariub77f24b2013-01-24 18:54:33 -080028845
28846 if ( pWDICtx->wdiLowLevelIndCB )
28847 {
28848 /*Notify UMAC*/
28849 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28850 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028851
28852 //Free memory allocated for WDI_WakeReasonIndType structure
28853 wpalMemoryFree(pWdiInd);
28854
28855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028856 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028857
28858 return WDI_STATUS_SUCCESS;
28859}
28860#endif // WLAN_WAKEUP_EVENTS
28861
28862void WDI_GetWcnssCompiledApiVersion
28863(
28864 WDI_WlanVersionType *pWcnssApiVersion
28865)
28866{
28867 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28868 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28869 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28870 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28871}
28872
28873/**
28874 @brief Process Set TM Level Rsp function (called when a
28875 response is being received over the bus from HAL)
28876
28877 @param pWDICtx: pointer to the WLAN DAL context
28878 pEventData: pointer to the event information structure
28879
28880 @see
28881 @return Result of the function call
28882*/
28883WDI_Status
28884WDI_ProcessSetTmLevelRsp
28885(
28886 WDI_ControlBlockType* pWDICtx,
28887 WDI_EventInfoType* pEventData
28888)
28889{
28890 WDI_Status wdiStatus;
28891 eHalStatus halStatus;
28892 WDI_SetTmLevelCb wdiSetTmLevelCb;
28893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28894
28895 /*-------------------------------------------------------------------------
28896 Sanity check
28897 -------------------------------------------------------------------------*/
28898 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28899 ( NULL == pEventData->pEventData ))
28900 {
28901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028902 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028903 WDI_ASSERT(0);
28904 return WDI_STATUS_E_FAILURE;
28905 }
28906
28907 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28908
28909 /*-------------------------------------------------------------------------
28910 Extract response and send it to UMAC
28911 -------------------------------------------------------------------------*/
28912 halStatus = *((eHalStatus*)pEventData->pEventData);
28913 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28914
28915 /*Notify UMAC*/
28916 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28917
28918 return WDI_STATUS_SUCCESS;
28919}/*WDI_ProcessSetTmLevelRsp*/
28920
28921/**
28922 @brief Process Set Thermal Mitigation level Changed request
28923
28924 @param pWDICtx: pointer to the WLAN DAL context
28925 pEventData: pointer to the event information structure
28926
28927 @see
28928 @return Result of the function call
28929*/
28930WDI_Status
28931WDI_ProcessSetTmLevelReq
28932(
28933 WDI_ControlBlockType* pWDICtx,
28934 WDI_EventInfoType* pEventData
28935)
28936{
28937 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28938 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28939 wpt_uint8* pSendBuffer = NULL;
28940 wpt_uint16 usDataOffset = 0;
28941 wpt_uint16 usSendSize = 0;
28942 tSetThermalMitgationType halTmMsg;
28943
28944 /*-------------------------------------------------------------------------
28945 Sanity check
28946 -------------------------------------------------------------------------*/
28947 if (( NULL == pEventData ) ||
28948 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28949 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28950 {
28951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028952 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028953 WDI_ASSERT(0);
28954 return WDI_STATUS_E_FAILURE;
28955 }
28956
28957 /*-----------------------------------------------------------------------
28958 Get message buffer
28959 -----------------------------------------------------------------------*/
28960 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28961 sizeof(halTmMsg),
28962 &pSendBuffer, &usDataOffset, &usSendSize))||
28963 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28964 {
28965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028966 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028967 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28968 WDI_ASSERT(0);
28969 return WDI_STATUS_E_FAILURE;
28970 }
28971
28972 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28973 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28974
28975 wpalMemoryCopy( pSendBuffer+usDataOffset,
28976 &halTmMsg,
28977 sizeof(halTmMsg));
28978
28979 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28980 pWDICtx->pfncRspCB = NULL;
28981 /*-------------------------------------------------------------------------
28982 Send Get STA Request to HAL
28983 -------------------------------------------------------------------------*/
28984 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28985 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28986}
28987
28988/* Fill the value from the global features enabled array to the global capabilities
28989 * bitmap struct
28990 */
28991static void
28992FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28993{
28994 wpt_int8 i;
28995 for (i=0; i<len; i++)
28996 {
28997 setFeatCaps(fCaps, enabledFeat[i]);
28998 }
28999}
29000
29001/**
29002 @brief WDI_featureCapsExchangeReq
29003 Post feature capability bitmap exchange event.
29004 Host will send its own capability to FW in this req and
29005 expect FW to send its capability back as a bitmap in Response
29006
29007 @param
29008
29009 wdiFeatureCapsExchangeCb: callback called on getting the response.
29010 It is kept to mantain similarity between WDI reqs and if needed, can
29011 be used in future. Currently, It is set to NULL
29012
29013 pUserData: user data will be passed back with the
29014 callback
29015
29016 @see
29017 @return Result of the function call
29018*/
29019WDI_Status
29020WDI_featureCapsExchangeReq
29021(
29022 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29023 void* pUserData
29024)
29025{
29026 WDI_EventInfoType wdiEventData;
29027 wpt_int32 fCapsStructSize;
29028
29029 /*------------------------------------------------------------------------
29030 Sanity Check
29031 ------------------------------------------------------------------------*/
29032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29033 {
29034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29035 "WDI API call before module is initialized - Fail request");
29036
29037 return WDI_STATUS_E_NOT_ALLOWED;
29038 }
29039
29040 /* Allocate memory separately for global variable carrying FW caps */
29041 fCapsStructSize = sizeof(tWlanFeatCaps);
29042 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29043 if ( NULL == gpHostWlanFeatCaps )
29044 {
29045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029046 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029047 WDI_ASSERT(0);
29048 return WDI_STATUS_MEM_FAILURE;
29049 }
29050
29051 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29052
29053 /*------------------------------------------------------------------------
29054 Fill in Event data and post to the Main FSM
29055 ------------------------------------------------------------------------*/
29056 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29057 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029059 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029060 gpHostWlanFeatCaps->featCaps[0],
29061 gpHostWlanFeatCaps->featCaps[1],
29062 gpHostWlanFeatCaps->featCaps[2],
29063 gpHostWlanFeatCaps->featCaps[3]
29064 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29066 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029067 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29068 wdiEventData.pEventData = gpHostWlanFeatCaps;
29069 wdiEventData.uEventDataSize = fCapsStructSize;
29070 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29071 wdiEventData.pUserData = pUserData;
29072
29073 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29074}
29075
29076/**
Yathish9f22e662012-12-10 14:21:35 -080029077 @brief Disable Active mode offload in Host
29078
29079 @param void
29080 @see
29081 @return void
29082*/
29083void
29084WDI_disableCapablityFeature(wpt_uint8 feature_index)
29085{
29086 supportEnabledFeatures[feature_index] = 0;
29087 return;
29088}
29089
29090/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029091 @brief Process Host-FW Capability Exchange Request function
29092
29093 @param pWDICtx: pointer to the WLAN DAL context
29094 pEventData: pointer to the event information structure
29095
29096 @see
29097 @return Result of the function call
29098*/
29099WDI_Status
29100WDI_ProcessFeatureCapsExchangeReq
29101(
29102 WDI_ControlBlockType* pWDICtx,
29103 WDI_EventInfoType* pEventData
29104)
29105{
29106 wpt_uint8* pSendBuffer = NULL;
29107 wpt_uint16 usDataOffset = 0;
29108 wpt_uint16 usSendSize = 0;
29109 wpt_uint16 usLen = 0;
29110
29111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29112
29113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029114 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029115
29116 /*-------------------------------------------------------------------------
29117 Sanity check
29118 -------------------------------------------------------------------------*/
29119 /* Call back function is NULL since not required for cap exchange req */
29120 if (( NULL == pEventData ) ||
29121 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29122 {
29123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029124 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029125 WDI_ASSERT(0);
29126 return WDI_STATUS_E_FAILURE;
29127 }
29128
29129 /*-----------------------------------------------------------------------
29130 Get message buffer
29131 -----------------------------------------------------------------------*/
29132 usLen = sizeof(tWlanFeatCaps);
29133
29134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29135 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29136 usLen,
29137 &pSendBuffer, &usDataOffset, &usSendSize))||
29138 ( usSendSize < (usDataOffset + usLen )))
29139 {
29140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029141 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029142 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29143 WDI_ASSERT(0);
29144 return WDI_STATUS_E_FAILURE;
29145 }
29146
29147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029148 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029149 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29150 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29151 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29152 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29153 );
29154
29155 /* Copy host caps after the offset in the send buffer */
29156 wpalMemoryCopy( pSendBuffer+usDataOffset,
29157 (tWlanFeatCaps *)pEventData->pEventData,
29158 usLen);
29159
29160 /*-------------------------------------------------------------------------
29161 Send Start Request to HAL
29162 -------------------------------------------------------------------------*/
29163 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29164 (WDI_StartRspCb)pEventData->pCBfnc,
29165 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29166
29167}/*WDI_ProcessFeatureCapsExchangeReq*/
29168
29169/**
29170 @brief Process Host-FW Capability Exchange Response function
29171
29172 @param pWDICtx: pointer to the WLAN DAL context
29173 pEventData: pointer to the event information structure
29174
29175 @see
29176 @return Result of the function call
29177*/
29178WDI_Status
29179WDI_ProcessFeatureCapsExchangeRsp
29180(
29181 WDI_ControlBlockType* pWDICtx,
29182 WDI_EventInfoType* pEventData
29183)
29184{
29185 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29186 wpt_int32 fCapsStructSize;
29187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29188
29189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029190 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029191
29192 /*-------------------------------------------------------------------------
29193 Sanity check
29194 -------------------------------------------------------------------------*/
29195 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29196 ( NULL == pEventData->pEventData ))
29197 {
29198 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029200 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029201 WDI_ASSERT(0);
29202 return WDI_STATUS_E_FAILURE;
29203 }
29204
29205 /* Allocate memory separately for global variable carrying FW caps */
29206 fCapsStructSize = sizeof(tWlanFeatCaps);
29207 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29208 if ( NULL == gpFwWlanFeatCaps )
29209 {
29210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029211 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029212 WDI_ASSERT(0);
29213 return WDI_STATUS_MEM_FAILURE;
29214 }
29215
29216 /*-------------------------------------------------------------------------
29217 Unpack HAL Response Message - the header was already extracted by the
29218 main Response Handling procedure
29219 -------------------------------------------------------------------------*/
29220 /*-------------------------------------------------------------------------
29221 Extract response and send it to UMAC
29222 -------------------------------------------------------------------------*/
29223
29224 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29225 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029227 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029228 gpFwWlanFeatCaps->featCaps[0],
29229 gpFwWlanFeatCaps->featCaps[1],
29230 gpFwWlanFeatCaps->featCaps[2],
29231 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029232 );
29233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29234 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029235 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29236
29237 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29238 if (wdiFeatureCapsExchangeCb != NULL)
29239 wdiFeatureCapsExchangeCb(NULL, NULL);
29240
29241 return WDI_STATUS_SUCCESS;
29242}
29243
Mohit Khanna4a70d262012-09-11 16:30:12 -070029244#ifdef WLAN_FEATURE_11AC
29245WDI_Status
29246WDI_ProcessUpdateVHTOpModeRsp
29247(
29248 WDI_ControlBlockType* pWDICtx,
29249 WDI_EventInfoType* pEventData
29250)
29251{
29252 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29253 WDI_Status wdiStatus;
29254 eHalStatus halStatus;
29255
29256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29257
29258 /*-------------------------------------------------------------------------
29259 Sanity check
29260 -------------------------------------------------------------------------*/
29261 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29262 ( NULL == pEventData->pEventData))
29263 {
29264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029265 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029266 WDI_ASSERT(0);
29267 return WDI_STATUS_E_FAILURE;
29268 }
29269 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29270
29271 /*-------------------------------------------------------------------------
29272 Extract response and send it to UMAC
29273 -------------------------------------------------------------------------*/
29274 halStatus = *((eHalStatus*)pEventData->pEventData);
29275 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29276
29277 /*Notify UMAC*/
29278 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29279
29280 return WDI_STATUS_SUCCESS;
29281}
29282#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029283/**
29284 @brief WDI_getHostWlanFeatCaps
29285 WDI API that returns whether the feature passed to it as enum value in
29286 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29287 variable storing host capability bitmap to find this. This can be used by
29288 other moduels to decide certain things like call different APIs based on
29289 whether a particular feature is supported.
29290
29291 @param
29292
29293 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29294
29295 @see
29296 @return
29297 0 - if the feature is NOT supported in host
29298 any non-zero value - if the feature is SUPPORTED in host.
29299*/
29300wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29301{
29302 wpt_uint8 featSupported = 0;
29303 if (gpHostWlanFeatCaps != NULL)
29304 {
29305 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29306 }
29307 else
29308 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029310 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029311 }
29312 return featSupported;
29313}
29314
29315/**
29316 @brief WDI_getFwWlanFeatCaps
29317 WDI API that returns whether the feature passed to it as enum value in
29318 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29319 variable storing host capability bitmap to find this. This can be used by
29320 other moduels to decide certain things like call different APIs based on
29321 whether a particular feature is supported.
29322
29323 @param
29324
29325 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29326 in wlan_hal_msg.h.
29327
29328 @see
29329 @return
29330 0 - if the feature is NOT supported in FW
29331 any non-zero value - if the feature is SUPPORTED in FW.
29332*/
29333wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29334{
29335 wpt_uint8 featSupported = 0;
29336 if (gpFwWlanFeatCaps != NULL)
29337 {
29338 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29339 }
29340 else
29341 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029343 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029344 }
29345 return featSupported;
29346}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029347
29348#ifdef WLAN_FEATURE_11AC
29349WDI_Status
29350WDI_ProcessUpdateVHTOpModeReq
29351(
29352 WDI_ControlBlockType* pWDICtx,
29353 WDI_EventInfoType* pEventData
29354)
29355{
29356 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29357 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29358 wpt_uint8* pSendBuffer = NULL;
29359 wpt_uint16 usDataOffset = 0;
29360 wpt_uint16 usSendSize = 0;
29361
29362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29363
29364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029365 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029366
29367 /*-------------------------------------------------------------------------
29368 Sanity check
29369 -------------------------------------------------------------------------*/
29370 if (( NULL == pEventData ) ||
29371 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29372 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29373 {
29374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029375 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029376 WDI_ASSERT(0);
29377 return WDI_STATUS_E_FAILURE;
29378 }
29379
29380 /*-----------------------------------------------------------------------
29381 Get message buffer
29382 -----------------------------------------------------------------------*/
29383 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29384 sizeof(WDI_UpdateVHTOpMode),
29385 &pSendBuffer, &usDataOffset, &usSendSize))||
29386 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29387 {
29388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29389 "Unable to get send buffer in update vht opMode req");
29390 WDI_ASSERT(0);
29391 return WDI_STATUS_E_FAILURE;
29392 }
29393
29394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029395 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029396
29397 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29398 sizeof(WDI_UpdateVHTOpMode));
29399
29400 /*-------------------------------------------------------------------------
29401 Send Start Request to HAL
29402 -------------------------------------------------------------------------*/
29403 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29404 wdiVHTOpModeCb,
29405 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29406
29407}
29408
29409WDI_Status
29410WDI_UpdateVHTOpModeReq
29411(
29412 WDI_UpdateVHTOpMode *pData,
29413 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29414 void* pUserData
29415)
29416{
29417 WDI_EventInfoType wdiEventData;
29418
29419 /*------------------------------------------------------------------------
29420 Sanity Check
29421 ------------------------------------------------------------------------*/
29422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29423 {
29424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29425 "WDI API call before module is initialized - Fail request");
29426
29427 return WDI_STATUS_E_NOT_ALLOWED;
29428 }
29429
29430 /*------------------------------------------------------------------------
29431 Fill in Event data and post to the Main FSM
29432 ------------------------------------------------------------------------*/
29433 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29434 wdiEventData.pEventData = pData;
29435 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29436 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29437 wdiEventData.pUserData = pUserData;
29438
29439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029440 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029441
29442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29443
29444}
29445#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029446
29447/**
29448 @brief WDI_TransportChannelDebug -
29449 Display DXE Channel debugging information
29450 User may request to display DXE channel snapshot
29451 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029452
Jeff Johnsonb88db982012-12-10 13:34:59 -080029453 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029454 @param debugFlags : Enable stall detect features
29455 defined by WPAL_DeviceDebugFlags
29456 These features may effect
29457 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029458 @see
29459 @return none
29460*/
29461void WDI_TransportChannelDebug
29462(
29463 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029464 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029465)
29466{
Mihir Shete40a55652014-03-02 14:14:47 +053029467 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029468 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029469}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029470/**
29471 @brief WDI_SsrTimerCB
29472 Callback function for SSR timer, if this is called then the graceful
29473 shutdown for Riva did not happen.
29474
29475 @param pUserData : user data to timer
29476
29477 @see
29478 @return none
29479*/
29480void
29481WDI_SsrTimerCB
29482(
29483 void *pUserData
29484)
29485{
29486 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29488
29489 if (NULL == pWDICtx )
29490 {
29491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029492 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029493 WDI_ASSERT(0);
29494 return;
29495 }
29496 wpalRivaSubystemRestart();
29497
29498 return;
29499
29500}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029501
29502/**
29503 @brief WDI_SetEnableSSR -
29504 This API is called to enable/disable SSR on WDI timeout.
29505
29506 @param enableSSR : enable/disable SSR
29507
29508 @see
29509 @return none
29510*/
29511void WDI_SetEnableSSR(wpt_boolean enableSSR)
29512{
29513 gWDICb.bEnableSSR = enableSSR;
29514}
Leo Chang9056f462013-08-01 19:21:11 -070029515
29516
29517#ifdef FEATURE_WLAN_LPHB
29518/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029519 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029520 This function will be invoked when FW detects low power
29521 heart beat failure
29522
29523 @param pWDICtx : wdi context
29524 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029525 @see
29526 @return Result of the function call
29527*/
29528WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029529WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029530(
29531 WDI_ControlBlockType* pWDICtx,
29532 WDI_EventInfoType* pEventData
29533)
29534{
29535 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029536 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29538
29539 /*-------------------------------------------------------------------------
29540 Sanity check
29541 -------------------------------------------------------------------------*/
29542 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29543 (NULL == pEventData->pEventData))
29544 {
29545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29546 "%s: Invalid parameters", __func__);
29547 WDI_ASSERT(0);
29548 return WDI_STATUS_E_FAILURE;
29549 }
29550
29551 /*-------------------------------------------------------------------------
29552 Extract indication and send it to UMAC
29553 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029554 wpalMemoryCopy(&lphbIndicationParam,
29555 pEventData->pEventData,
29556 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029557
Leo Changd9df8aa2013-09-26 13:32:26 -070029558 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029559 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029560 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029561 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029562 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029563 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029564 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029565 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029566 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029567 /*Notify UMAC*/
29568 if (pWDICtx->wdiLowLevelIndCB)
29569 {
29570 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29571 }
29572
29573 return WDI_STATUS_SUCCESS;
29574}
29575
29576/**
29577 @brief WDI_ProcessLphbCfgRsp -
29578 LPHB configuration response from FW
29579
29580 @param pWDICtx : wdi context
29581 pEventData : indication data
29582
29583 @see
29584 @return Result of the function call
29585*/
29586WDI_Status WDI_ProcessLphbCfgRsp
29587(
29588 WDI_ControlBlockType* pWDICtx,
29589 WDI_EventInfoType* pEventData
29590)
29591{
29592 WDI_Status wdiStatus;
29593 eHalStatus halStatus;
29594 WDI_LphbCfgCb wdiLphbCfgCb;
29595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29596
29597 /*-------------------------------------------------------------------------
29598 Sanity check
29599 -------------------------------------------------------------------------*/
29600 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29601 (NULL == pEventData->pEventData))
29602 {
29603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29604 "%s: Invalid parameters", __func__);
29605 WDI_ASSERT(0);
29606 return WDI_STATUS_E_FAILURE;
29607 }
29608
29609 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29610
29611 /*-------------------------------------------------------------------------
29612 Extract response and send it to UMAC
29613 -------------------------------------------------------------------------*/
29614 halStatus = *((eHalStatus*)pEventData->pEventData);
29615 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29616
29617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29618 "LPHB Cfg Rsp Return status %d", wdiStatus);
29619 /*Notify UMAC*/
29620 if (NULL != wdiLphbCfgCb)
29621 {
29622 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29623 }
29624
29625 return WDI_STATUS_SUCCESS;
29626}
29627
29628/**
29629 @brief WDI_ProcessLPHBConfReq -
29630 LPHB configuration request to FW
29631
29632 @param pWDICtx : wdi context
29633 pEventData : indication data
29634
29635 @see
29636 @return none
29637*/
29638WDI_Status WDI_ProcessLPHBConfReq
29639(
29640 WDI_ControlBlockType* pWDICtx,
29641 WDI_EventInfoType* pEventData
29642)
29643{
29644 WDI_LPHBReq *pLphbReqParams;
29645 WDI_Status wdiStatus;
29646 wpt_uint8* pSendBuffer = NULL;
29647 wpt_uint16 usDataOffset = 0;
29648 wpt_uint16 usSendSize = 0;
29649 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29651
29652 /*-------------------------------------------------------------------------
29653 Sanity check
29654 -------------------------------------------------------------------------*/
29655 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29656 {
29657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29658 "%s: Invalid parameters in Suspend ind",__func__);
29659 WDI_ASSERT(0);
29660 return WDI_STATUS_E_FAILURE;
29661 }
29662
29663 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29664
29665 /*-----------------------------------------------------------------------
29666 Get message buffer
29667 -----------------------------------------------------------------------*/
29668 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29669 WDI_LPHB_CFG_REQ,
29670 sizeof(tHalLowPowerHeartBeatReqMsg),
29671 &pSendBuffer, &usDataOffset, &usSendSize))||
29672 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29673 {
29674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29675 "Unable to get send buffer in LPHB Ind ");
29676 WDI_ASSERT(0);
29677 return WDI_STATUS_E_FAILURE;
29678 }
29679
29680 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29681 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29682
29683 halLphbReqRarams->lowPowerHeartBeatCmdType =
29684 (tANI_U16)(++pLphbReqParams->cmd);
29685 switch ((tANI_U16)pLphbReqParams->cmd)
29686 {
29687 case WDI_LPHB_SET_EN_PARAMS_INDID:
29688 halLphbReqRarams->sessionIdx =
29689 pLphbReqParams->params.lphbEnableReq.session;
29690 halLphbReqRarams->options.control.heartBeatEnable =
29691 pLphbReqParams->params.lphbEnableReq.enable;
29692 halLphbReqRarams->options.control.heartBeatType =
29693 pLphbReqParams->params.lphbEnableReq.item;
29694 break;
29695
29696 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29697 halLphbReqRarams->sessionIdx =
29698 pLphbReqParams->params.lphbTcpParamReq.session;
29699 halLphbReqRarams->options.tcpParams.timeOutSec =
29700 pLphbReqParams->params.lphbTcpParamReq.timeout;
29701 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29702 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29703 sizeof(v_U32_t));
29704 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29705 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29706 sizeof(v_U32_t));
29707
29708 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29709 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29710 WDI_MAC_ADDR_LEN);
29711
29712 halLphbReqRarams->options.tcpParams.hostPort =
29713 pLphbReqParams->params.lphbTcpParamReq.src_port;
29714 halLphbReqRarams->options.tcpParams.destPort =
29715 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029716 halLphbReqRarams->options.tcpParams.timePeriodSec =
29717 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29718 halLphbReqRarams->options.tcpParams.tcpSn =
29719 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029720 break;
29721
29722 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29723 halLphbReqRarams->sessionIdx =
29724 pLphbReqParams->params.lphbTcpFilterReq.session;
29725 halLphbReqRarams->options.tcpUdpFilter.offset =
29726 pLphbReqParams->params.lphbTcpFilterReq.offset;
29727 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29728 pLphbReqParams->params.lphbTcpFilterReq.length;
29729 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29730 pLphbReqParams->params.lphbTcpFilterReq.filter,
29731 WDI_LPHB_FILTER_LEN);
29732 break;
29733
29734 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29735 halLphbReqRarams->sessionIdx =
29736 pLphbReqParams->params.lphbUdpParamReq.session;
29737 halLphbReqRarams->options.udpParams.timeOutSec =
29738 pLphbReqParams->params.lphbUdpParamReq.timeout;
29739 halLphbReqRarams->options.udpParams.timePeriodSec =
29740 pLphbReqParams->params.lphbUdpParamReq.interval;
29741 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29742 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29743 sizeof(v_U32_t));
29744 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29745 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29746 sizeof(v_U32_t));
29747
29748 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29749 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29750 WDI_MAC_ADDR_LEN);
29751
29752 halLphbReqRarams->options.udpParams.hostPort =
29753 pLphbReqParams->params.lphbUdpParamReq.src_port;
29754 halLphbReqRarams->options.udpParams.destPort =
29755 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29756 break;
29757
29758 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29759 halLphbReqRarams->sessionIdx =
29760 pLphbReqParams->params.lphbUdpFilterReq.session;
29761 halLphbReqRarams->options.tcpUdpFilter.offset =
29762 pLphbReqParams->params.lphbUdpFilterReq.offset;
29763 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29764 pLphbReqParams->params.lphbUdpFilterReq.length;
29765 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29766 pLphbReqParams->params.lphbUdpFilterReq.filter,
29767 WDI_LPHB_FILTER_LEN);
29768 break;
29769
29770 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29771 /* NA */
29772 break;
29773
29774 default:
29775 break;
29776 }
29777
29778 /*-------------------------------------------------------------------------
29779 Send Suspend Request to HAL
29780 -------------------------------------------------------------------------*/
29781 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29782 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29783
29784 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29785 usSendSize, pWDICtx->pfncRspCB,
29786 pWDICtx->pReqStatusUserData,
29787 WDI_LPHB_CFG_RESP);
29788
29789 return wdiStatus;
29790}
29791
29792/**
29793 @brief WDI_LPHBConfReq -
29794 LPHB configuration request API
29795
29796 @param lphbconfParam : configuration parameter
29797 usrData : client context
29798 lphbCfgCb : callback function pointer
29799
29800 @see
29801 @return Success or fail status code
29802*/
29803WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29804 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29805{
29806 WDI_EventInfoType wdiEventData;
29807
29808 /*------------------------------------------------------------------------
29809 Sanity Check
29810 ------------------------------------------------------------------------*/
29811 if (eWLAN_PAL_FALSE == gWDIInitialized)
29812 {
29813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29814 "WDI API call before module is initialized - Fail request");
29815
29816 return WDI_STATUS_E_NOT_ALLOWED;
29817 }
29818
29819 /*------------------------------------------------------------------------
29820 Fill in Event data and post to the Main FSM
29821 ------------------------------------------------------------------------*/
29822 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29823 wdiEventData.pEventData = lphbconfParam;
29824 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29825 wdiEventData.pCBfnc = lphbCfgCb;
29826 wdiEventData.pUserData = usrData;
29827
29828 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29829}
29830#endif /* FEATURE_WLAN_LPHB */
29831
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029832/**
29833 @brief WDI_ProcessIbssPeerInactivityInd
29834 Process peer inactivity indication coming from HAL
29835
29836 @param pWDICtx: pointer to the WLAN DAL context
29837 pEventData: pointer to the event information structure
29838 @see
29839 @return Result of the function call
29840*/
29841WDI_Status
29842WDI_ProcessIbssPeerInactivityInd
29843(
29844 WDI_ControlBlockType* pWDICtx,
29845 WDI_EventInfoType* pEventData
29846)
29847{
29848 WDI_LowLevelIndType wdiInd;
29849 tIbssPeerInactivityIndMsg halIbssIndMsg;
29850
29851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29852
29853 /*-------------------------------------------------------------------------
29854 Sanity check
29855 -------------------------------------------------------------------------*/
29856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29857 ( NULL == pEventData->pEventData ))
29858 {
29859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29860 "%s: Invalid parameters", __func__);
29861 WDI_ASSERT( 0 );
29862 return WDI_STATUS_E_FAILURE;
29863 }
29864
29865 /*-------------------------------------------------------------------------
29866 Extract indication and send it to UMAC
29867 -------------------------------------------------------------------------*/
29868 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29869 pEventData->pEventData,
29870 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29871
29872 /*Fill in the indication parameters*/
29873 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29874
29875 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29876 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29877
29878 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29879 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29880
29881 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29882 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29883 sizeof(tSirMacAddr));
29884
29885 /*Notify UMAC*/
29886 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29887
29888 return WDI_STATUS_SUCCESS;
29889
29890} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029891
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029892/**
29893*@brief WDI_RateUpdateInd will be called when the upper MAC
29894 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029895
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029896
29897 @param wdiRateUpdateIndParams:
29898
29899
29900 @see
29901 @return Result of the function call
29902*/
29903WDI_Status
29904WDI_RateUpdateInd
29905(
29906 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29907)
29908{
29909 WDI_EventInfoType wdiEventData;
29910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29911
29912 /*------------------------------------------------------------------------
29913 Sanity Check
29914 ------------------------------------------------------------------------*/
29915 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29916 {
29917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29918 "WDI API call before module is initialized - Fail request");
29919
29920 return WDI_STATUS_E_NOT_ALLOWED;
29921 }
29922
29923 /*------------------------------------------------------------------------
29924 Fill in Event data and post to the Main FSM
29925 ------------------------------------------------------------------------*/
29926 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29927 wdiEventData.pEventData = wdiRateUpdateIndParams;
29928 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29929 wdiEventData.pCBfnc = NULL;
29930 wdiEventData.pUserData = NULL;
29931
29932 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29933
29934}/* WDI_RateUpdateInd */
29935
29936/**
29937 @brief Process Rate Update Indication and post it to HAL
29938
29939 @param pWDICtx: pointer to the WLAN DAL context
29940 pEventData: pointer to the event information structure
29941
29942 @see
29943 @return Result of the function call
29944*/
29945WDI_Status
29946WDI_ProcessRateUpdateInd
29947(
29948 WDI_ControlBlockType* pWDICtx,
29949 WDI_EventInfoType* pEventData
29950)
29951{
29952 wpt_uint8* pSendBuffer = NULL;
29953 wpt_uint16 usDataOffset = 0;
29954 wpt_uint16 usSendSize = 0;
29955 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29956 tHalRateUpdateInd *pRateUpdateInd;
29957 WDI_Status wdiStatus;
29958
29959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29960
29961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29962 "%s", __func__);
29963
29964 /*-------------------------------------------------------------------------
29965 Sanity check
29966 -------------------------------------------------------------------------*/
29967 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29968 {
29969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29970 "%s: Invalid parameters", __func__);
29971 WDI_ASSERT(0);
29972 return WDI_STATUS_E_FAILURE;
29973 }
29974 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29975 /*-----------------------------------------------------------------------
29976 Get message buffer
29977 -----------------------------------------------------------------------*/
29978
29979 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29980 WDI_RATE_UPDATE_IND,
29981 sizeof(tHalRateUpdateParams),
29982 &pSendBuffer, &usDataOffset, &usSendSize))||
29983 ( usSendSize < (usDataOffset +
29984 sizeof(tHalRateUpdateParams) )))
29985 {
29986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29987 "Unable to get send buffer in Rate Update Indication %p ",
29988 pEventData);
29989 WDI_ASSERT(0);
29990 return WDI_STATUS_E_FAILURE;
29991 }
29992
29993 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29994
29995 /* Copy the bssid */
29996 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29997 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29998
29999 /* Copy the tx flags */
30000 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30001 pwdiRateUpdateInd->ucastDataRateTxFlag;
30002 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30003 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30004 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30005 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30006 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30007 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30008
30009 /* Copy the tx rates */
30010 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30011 pwdiRateUpdateInd->ucastDataRate;
30012 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30013 pwdiRateUpdateInd->reliableMcastDataRate;
30014 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30015 pwdiRateUpdateInd->mcastDataRate24GHz;
30016 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30017 pwdiRateUpdateInd->mcastDataRate5GHz;
30018
30019 /*-------------------------------------------------------------------------
30020 Send Rate Update Indication to HAL
30021 -------------------------------------------------------------------------*/
30022 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30023 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30024
30025 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30026
30027 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30028 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30029
30030} /* WDI_ProcessRateUpdateInd */
30031
30032#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030033/**
30034 @brief Process stop batch indication from WDA
30035
30036 @param pWDICtx: pointer to the WLAN DAL context
30037 pEventData: pointer to the event information structure
30038
30039 @see
30040 @return Result of the function call
30041*/
30042WDI_Status
30043WDI_ProcessStopBatchScanInd
30044(
30045 WDI_ControlBlockType* pWDICtx,
30046 WDI_EventInfoType* pEventData
30047)
30048{
30049 wpt_uint8* pSendBuffer = NULL;
30050 wpt_uint16 usDataOffset = 0;
30051 wpt_uint16 usSendSize = 0;
30052 WDI_Status wdiStatus;
30053 tHalBatchScanStopIndParam *pHalInd = NULL;
30054 WDI_StopBatchScanIndType *pWdiInd = NULL;
30055
30056
30057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30058
30059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30060 "%s", __func__);
30061
30062 /*-------------------------------------------------------------------------
30063 Sanity check
30064 -------------------------------------------------------------------------*/
30065
30066 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30067 {
30068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30069 "%s: Invalid parameters", __func__);
30070 WDI_ASSERT(0);
30071 return WDI_STATUS_E_FAILURE;
30072 }
30073 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30074 /*-----------------------------------------------------------------------
30075 Get message buffer
30076 -----------------------------------------------------------------------*/
30077
30078 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30079 WDI_STOP_BATCH_SCAN_IND,
30080 sizeof(tHalBatchScanStopIndParam),
30081 &pSendBuffer, &usDataOffset, &usSendSize))||
30082 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30083 {
30084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30085 "Unable to get send buffer in stop batch scan ind %p ",
30086 pEventData);
30087 WDI_ASSERT(0);
30088 return WDI_STATUS_E_FAILURE;
30089 }
30090
30091 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30092 pHalInd->param = pWdiInd->param;
30093
30094 pWDICtx->pReqStatusUserData = NULL;
30095 pWDICtx->pfncRspCB = NULL;
30096 /*-------------------------------------------------------------------------
30097 Send Stop batch scan indication to HAL
30098 -------------------------------------------------------------------------*/
30099 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30100 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30101}
30102
30103/**
30104 @brief This API is called to trigger batch scan results from FW
30105
30106 @param pWDICtx: pointer to the WLAN DAL context
30107 pEventData: pointer to the event information structure
30108
30109 @see
30110 @return Result of the function call
30111*/
30112WDI_Status
30113WDI_ProcessTriggerBatchScanResultInd
30114(
30115 WDI_ControlBlockType* pWDICtx,
30116 WDI_EventInfoType* pEventData
30117)
30118{
30119 WDI_Status wdiStatus;
30120 wpt_uint8* pSendBuffer = NULL;
30121 wpt_uint16 usDataOffset = 0;
30122 wpt_uint16 usSendSize = 0;
30123 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30124 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30125
30126
30127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30128
30129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30130 "%s", __func__);
30131
30132 /*-------------------------------------------------------------------------
30133 Sanity check
30134 -------------------------------------------------------------------------*/
30135
30136 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30137 {
30138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30139 "%s: Invalid parameters", __func__);
30140 WDI_ASSERT(0);
30141 return WDI_STATUS_E_FAILURE;
30142 }
30143 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30144 /*-----------------------------------------------------------------------
30145 Get message buffer
30146 -----------------------------------------------------------------------*/
30147
30148 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30149 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30150 sizeof(tHalBatchScanTriggerResultParam),
30151 &pSendBuffer, &usDataOffset, &usSendSize))||
30152 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30153 {
30154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30155 "Unable to get send buffer in stop batch scan ind %p ",
30156 pEventData);
30157 WDI_ASSERT(0);
30158 return WDI_STATUS_E_FAILURE;
30159 }
30160
30161 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30162 pHalInd->param = pWdiInd->param;
30163
30164 pWDICtx->pReqStatusUserData = NULL;
30165 pWDICtx->pfncRspCB = NULL;
30166 /*-------------------------------------------------------------------------
30167 Send trigger batch scan result indication to HAL
30168 -------------------------------------------------------------------------*/
30169 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30170 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30171}
30172
30173
30174/**
30175 @brief Process set batch scan response from FW
30176
30177 @param pWDICtx: pointer to the WLAN DAL context
30178 pEventData: pointer to the event information structure
30179
30180 @see
30181 @return Result of the function call
30182*/
30183WDI_Status
30184WDI_ProcessSetBatchScanRsp
30185(
30186 WDI_ControlBlockType* pWDICtx,
30187 WDI_EventInfoType* pEventData
30188)
30189{
30190 WDI_SetBatchScanCb wdiSetBatchScanCb;
30191 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30192
30193 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30195
30196 /*sanity check*/
30197 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30198 ( NULL == pEventData->pEventData))
30199 {
30200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30201 "%s: Invalid parameters", __func__);
30202 WDI_ASSERT(0);
30203 return WDI_STATUS_E_FAILURE;
30204 }
30205
30206 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30207 if ( NULL == wdiSetBatchScanCb)
30208 {
30209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30210 "%s: call back function is NULL", __func__);
30211 WDI_ASSERT(0);
30212 return WDI_STATUS_E_FAILURE;
30213 }
30214
30215 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30216
30217 if (NULL == pSetBatchScanRsp)
30218 {
30219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030220 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030221 pWDICtx, pEventData, pEventData->pEventData);
30222 WDI_ASSERT(0);
30223 return WDI_STATUS_E_FAILURE;
30224 }
30225
Sunil Duttbd736ed2014-05-26 21:19:41 +053030226 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030227 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30228
30229 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30230
Sunil Duttbd736ed2014-05-26 21:19:41 +053030231 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030232 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30233
30234 wpalMemoryFree(pSetBatchScanRsp);
30235
30236 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030237}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030238
30239/**
30240 @brief Process batch scan result indication from FW
30241
30242 @param pWDICtx: pointer to the WLAN DAL context
30243 pEventData: pointer to the event information structure
30244
30245 @see
30246 @return Result of the function call
30247*/
30248WDI_Status
30249WDI_ProcessBatchScanResultInd
30250(
30251 WDI_ControlBlockType* pWDICtx,
30252 WDI_EventInfoType* pEventData
30253)
30254{
30255 void *pBatchScanResultInd;
30256 WDI_LowLevelIndType wdiInd;
30257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30258
Sunil Duttbd736ed2014-05-26 21:19:41 +053030259 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030260 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30261 ( NULL == pEventData->pEventData))
30262 {
30263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30264 "%s: Invalid parameters", __func__);
30265 WDI_ASSERT(0);
30266 return WDI_STATUS_E_FAILURE;
30267 }
30268
Sunil Duttbd736ed2014-05-26 21:19:41 +053030269 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030270 pBatchScanResultInd = (void *)pEventData->pEventData;
30271
Sunil Duttbd736ed2014-05-26 21:19:41 +053030272 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030273 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30274
30275 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30276
Sunil Duttbd736ed2014-05-26 21:19:41 +053030277 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030278 if (pWDICtx->wdiLowLevelIndCB)
30279 {
30280 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30281 }
30282 else
30283 {
30284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30285 "%s: WDILowLevelIndCb is null", __func__);
30286 WDI_ASSERT(0);
30287 return WDI_STATUS_E_FAILURE;
30288 }
30289
30290 return WDI_STATUS_SUCCESS;
30291} /*End of WDI_ProcessBatchScanResultInd*/
30292
Sunil Duttbd736ed2014-05-26 21:19:41 +053030293#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30294/**
30295 @brief Process Link Layer Statistics Result indication from FW
30296
30297 @param pWDICtx: pointer to the WLAN DAL context
30298 pEventData: pointer to the event information structure
30299
30300 @see
30301 @return Result of the function call
30302*/
30303WDI_Status
30304WDI_ProcessLinkLayerStatsResultsInd
30305(
30306 WDI_ControlBlockType* pWDICtx,
30307 WDI_EventInfoType* pEventData
30308)
30309{
30310 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030311 WDI_LLstatsResultsType *halLLStatsResults;
30312 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030313 WDI_LowLevelIndType wdiInd;
30314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30315
30316 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30317 "%s: Event RESULTS Indication", __func__);
30318
30319 /* sanity check */
30320 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30321 ( NULL == pEventData->pEventData))
30322 {
30323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30324 "%s: Invalid parameters", __func__);
30325 WDI_ASSERT(0);
30326 return WDI_STATUS_E_FAILURE;
30327 }
30328
30329 /* extract response and send it to UMAC */
30330 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30331
30332 /* Fill in the indication parameters */
30333 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30334
Dino Mycled3d50022014-07-07 12:58:25 +053030335 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30336 = pLinkLayerStatsInd;
30337
30338 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30339
30340
30341 /* Need to fill in the MAC address */
30342 if ( WDI_STATUS_SUCCESS !=
30343 WDI_STATableGetStaMacAddr(pWDICtx,
30344 halLLStatsResults->iface_id,
30345 &macAddr))
30346 {
30347 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30348 " ifaceId: %u does not exist in the WDI Station Table",
30349 halLLStatsResults->iface_id);
30350
30351 return WDI_STATUS_E_FAILURE;
30352 }
30353 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30354 macAddr, WDI_MAC_ADDR_LEN);
30355
30356 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30357 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30358 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030359
30360 /* Notify UMAC */
30361 if (pWDICtx->wdiLowLevelIndCB)
30362 {
30363 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30364 }
30365 else
30366 {
30367 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30368 "%s: WDILowLevelIndCb is null", __func__);
30369 WDI_ASSERT(0);
30370 return WDI_STATUS_E_FAILURE;
30371 }
30372
30373 return WDI_STATUS_SUCCESS;
30374} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30375#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30376
Rajeev79dbe4c2013-10-05 11:03:42 +053030377/**
30378 @brief WDI_ProcessSetBatchScanReq -
30379 Set batch scan request to FW
30380
30381 @param pWDICtx : wdi context
30382 pEventData : indication data
30383
30384 @see
30385 @return none
30386*/
30387WDI_Status WDI_ProcessSetBatchScanReq
30388(
30389 WDI_ControlBlockType* pWDICtx,
30390 WDI_EventInfoType* pEventData
30391)
30392{
30393 WDI_SetBatchScanReqType *pWdiReq;
30394 WDI_Status wdiStatus;
30395 wpt_uint8* pSendBuffer = NULL;
30396 wpt_uint16 usDataOffset = 0;
30397 wpt_uint16 usSendSize = 0;
30398 tHalBatchScanSetParams *pHalReq;
30399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30400
30401 /*sanity check*/
30402 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30403 {
30404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30405 "%s: Invalid parameters in set batch scan request", __func__);
30406 WDI_ASSERT(0);
30407 return WDI_STATUS_E_FAILURE;
30408 }
30409
30410
30411 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30412
30413
30414 /*get message buffer*/
30415 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30416 WDI_SET_BATCH_SCAN_REQ,
30417 sizeof(tHalBatchScanSetParams),
30418 &pSendBuffer, &usDataOffset, &usSendSize))||
30419 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30420 {
30421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30422 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30423 WDI_ASSERT(0);
30424 return WDI_STATUS_E_FAILURE;
30425 }
30426
30427 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30428
30429 pHalReq->rtt = pWdiReq->rtt;
30430 pHalReq->rfBand = pWdiReq->rfBand;
30431 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30432 pHalReq->scanInterval = pWdiReq->scanFrequency;
30433 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30434
30435 /*send set batch scan request to fw*/
30436 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30437 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30438
30439 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30440 usSendSize, pWDICtx->pfncRspCB,
30441 pWDICtx->pReqStatusUserData,
30442 WDI_SET_BATCH_SCAN_RESP);
30443
30444 return wdiStatus;
30445}
30446
30447/**
30448 @brief WDI_SetBatchScanReq
30449 This API is called to set batch scan request in FW
30450
30451 @param pBatchScanReqParam : pointer to set batch scan re param
30452 usrData : Client context
30453 setBatchScanRspCb : set batch scan resp callback
30454 @see
30455 @return SUCCESS or FAIL
30456*/
30457WDI_Status WDI_SetBatchScanReq
30458(
30459 void *pBatchScanReqParam,
30460 void *usrData,
30461 WDI_SetBatchScanCb setBatchScanRspCb
30462)
30463{
30464 WDI_EventInfoType wdiEventData;
30465
30466 /*sanity check*/
30467 if (eWLAN_PAL_FALSE == gWDIInitialized)
30468 {
30469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30470 "WDI API call before module is initialized - Fail request");
30471
30472 return WDI_STATUS_E_NOT_ALLOWED;
30473 }
30474
30475 /* fill in event data and post to the main FSM */
30476 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30477 wdiEventData.pEventData = pBatchScanReqParam;
30478 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30479 wdiEventData.pCBfnc = setBatchScanRspCb;
30480 wdiEventData.pUserData = usrData;
30481
30482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30483}
30484
30485/**
30486 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30487
30488 @param None
30489
30490 @see
30491
30492 @return Status of the request
30493*/
30494WDI_Status
30495WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30496{
30497 WDI_EventInfoType wdiEventData;
30498
30499 /*-------------------------------------------------------------------------
30500 Sanity Check
30501 ------------------------------------------------------------------------*/
30502 if (eWLAN_PAL_FALSE == gWDIInitialized)
30503 {
30504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30505 "WDI API call before module is initialized - Fail request!");
30506
30507 return WDI_STATUS_E_NOT_ALLOWED;
30508 }
30509
30510 /*-------------------------------------------------------------------------
30511 Fill in Event data and post to the Main FSM
30512 ------------------------------------------------------------------------*/
30513 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30514 wdiEventData.pEventData = pWdiReq;
30515 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30516 wdiEventData.pCBfnc = NULL;
30517 wdiEventData.pUserData = NULL;
30518
30519 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30520}
30521
30522/**
30523 @brief WDI_TriggerBatchScanResultInd
30524 This API is called to pull batch scan result from FW
30525
30526 @param pWdiReq : pointer to get batch scan ind param
30527 @see
30528 @return SUCCESS or FAIL
30529*/
30530WDI_Status WDI_TriggerBatchScanResultInd
30531(
30532 WDI_TriggerBatchScanResultIndType *pWdiReq
30533)
30534{
30535 WDI_EventInfoType wdiEventData;
30536 /*-------------------------------------------------------------------------
30537 Sanity Check
30538 ------------------------------------------------------------------------*/
30539 if (eWLAN_PAL_FALSE == gWDIInitialized)
30540 {
30541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30542 "WDI API call before module is initialized - Fail request!");
30543
30544 return WDI_STATUS_E_NOT_ALLOWED;
30545 }
30546
30547 /*-------------------------------------------------------------------------
30548 Fill in Event data and post to the Main FSM
30549 ------------------------------------------------------------------------*/
30550 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30551 wdiEventData.pEventData = pWdiReq;
30552 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30553 wdiEventData.pCBfnc = NULL;
30554 wdiEventData.pUserData = NULL;
30555
30556 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30557}
Rajeev79dbe4c2013-10-05 11:03:42 +053030558#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030559
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030560/**
30561 @brief Process Update Channel Rsp function (called when a response is
30562 being received over the bus from HAL)
30563
30564 @param pWDICtx: pointer to the WLAN DAL context
30565 pEventData: pointer to the event information structure
30566
30567 @see
30568 @return Result of the function call
30569*/
30570WDI_Status
30571WDI_ProcessUpdateChanRsp
30572(
30573 WDI_ControlBlockType* pWDICtx,
30574 WDI_EventInfoType* pEventData
30575)
30576{
30577 WDI_Status wdiStatus;
30578 eHalStatus halStatus;
30579 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30581
30582 /*-------------------------------------------------------------------------
30583 Sanity check
30584 -------------------------------------------------------------------------*/
30585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30586 ( NULL == pEventData->pEventData))
30587 {
30588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30589 "%s: Invalid parameters", __func__);
30590 WDI_ASSERT(0);
30591 return WDI_STATUS_E_FAILURE;
30592 }
30593
30594 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30595
30596 /*-------------------------------------------------------------------------
30597 Extract response and send it to UMAC
30598 -------------------------------------------------------------------------*/
30599 halStatus = *((eHalStatus*)pEventData->pEventData);
30600 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30601
30602 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30603
30604 return WDI_STATUS_SUCCESS;
30605}/*WDI_ProcessUpdateChanRsp*/
30606
Leo Chang0b0e45a2013-12-15 15:18:55 -080030607#ifdef FEATURE_WLAN_CH_AVOID
30608/**
30609 @brief v -WDI_ProcessChAvoidInd
30610
30611
30612 @param pWDICtx : wdi context
30613 pEventData : indication data
30614 @see
30615 @return Result of the function call
30616*/
30617WDI_Status
30618WDI_ProcessChAvoidInd
30619(
30620 WDI_ControlBlockType* pWDICtx,
30621 WDI_EventInfoType* pEventData
30622)
30623{
30624 WDI_LowLevelIndType wdiInd;
30625 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30626 wpt_uint16 rangeLoop;
30627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30628
30629 /*-------------------------------------------------------------------------
30630 Sanity check
30631 -------------------------------------------------------------------------*/
30632 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30633 (NULL == pEventData->pEventData))
30634 {
30635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30636 "%s: Invalid parameters", __func__);
30637 WDI_ASSERT(0);
30638 return WDI_STATUS_E_FAILURE;
30639 }
30640
30641 /*-------------------------------------------------------------------------
30642 Extract indication and send it to UMAC
30643 -------------------------------------------------------------------------*/
30644 wpalMemoryCopy(&chAvoidIndicationParam,
30645 pEventData->pEventData,
30646 sizeof(tHalAvoidFreqRangeIndParams));
30647
30648 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30649 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30650 chAvoidIndicationParam.avoidCnt;
30651 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30652 (void *)chAvoidIndicationParam.avoidRange,
30653 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30654 sizeof(WDI_ChAvoidFreqType));
30655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30656 "%s: band count %d", __func__,
30657 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30658 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30659 {
30660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30661 "%s: srart freq %d, end freq %d", __func__,
30662 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30663 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30664 }
30665
30666 /*Notify UMAC*/
30667 if (pWDICtx->wdiLowLevelIndCB)
30668 {
30669 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30670 }
30671
30672 return WDI_STATUS_SUCCESS;
30673}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030674
Leo Chang0b0e45a2013-12-15 15:18:55 -080030675#endif /* FEATURE_WLAN_CH_AVOID */
30676
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030677/**
30678 @brief Process OBSS Start scan result indication
30679
30680 @param pWDICtx: pointer to the WLAN DAL context
30681 pEventData: pointer to the event information structure
30682
30683 @see
30684 @return Result of the function call
30685*/
30686WDI_Status
30687WDI_ProcessHT40OBSSScanInd
30688(
30689 WDI_ControlBlockType* pWDICtx,
30690 WDI_EventInfoType* pEventData
30691)
30692{
30693 wpt_uint8* pSendBuffer = NULL;
30694 wpt_uint16 usDataOffset = 0;
30695 wpt_uint16 usSendSize = 0;
30696 wpt_uint16 usLen = 0;
30697 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30698 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30699 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30700 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30701
30702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30703
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053030704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030705 "%s", __func__);
30706
30707 /*-------------------------------------------------------------------------
30708 Sanity check
30709 -------------------------------------------------------------------------*/
30710 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30711 {
30712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30713 "%s: Invalid parameters", __func__);
30714 WDI_ASSERT(0);
30715 return WDI_STATUS_E_FAILURE;
30716 }
30717 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30718
30719 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30720 /*-----------------------------------------------------------------------
30721 Get message buffer
30722 -----------------------------------------------------------------------*/
30723
30724 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30725 WDI_START_HT40_OBSS_SCAN_IND,
30726 sizeof(tHT40ObssScanIndType),
30727 &pSendBuffer, &usDataOffset, &usSendSize))||
30728 ( usSendSize < (usDataOffset + usLen )))
30729 {
30730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30731 "Unable to get send buffer in HT40 OBSS Start req %p ",
30732 pEventData);
30733 WDI_ASSERT(0);
30734 return WDI_STATUS_E_FAILURE;
30735 }
30736 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30737 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30738 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30739 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30740 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30741 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30742 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30743 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30744 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30745 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30746 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30747 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30748 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30749 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30750 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30751 pHT40ObssScanInd->OBSSScanActivityThreshold =
30752 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30753 pHT40ObssScanInd->selfStaIdx =
30754 pwdiHT40OBSSScanInd->selfStaIdx;
30755 pHT40ObssScanInd->bssIdx =
30756 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053030757 pHT40ObssScanInd->currentOperatingClass =
30758 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030759 pHT40ObssScanInd->fortyMHZIntolerent =
30760 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30761 pHT40ObssScanInd->channelCount =
30762 pwdiHT40OBSSScanInd->channelCount;
30763
30764 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30765 WDI_ROAM_SCAN_MAX_CHANNELS);
30766 pHT40ObssScanInd->ieFieldLen =
30767 pwdiHT40OBSSScanInd->ieFieldLen;
30768
30769 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30770 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30771 pWDICtx->pReqStatusUserData = NULL;
30772 pWDICtx->pfncRspCB = NULL;
30773
30774 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30775 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30776
30777 /*-------------------------------------------------------------------------
30778 Send OBSS Start Indication to HAL
30779 -------------------------------------------------------------------------*/
30780 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30781 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30782
30783} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30784
30785
30786/**
30787 @brief wdi_HT40OBSSScanInd
30788 This API is called to start OBSS scan
30789
30790 @param pWdiReq : pointer to get ind param
30791 @see
30792 @return SUCCESS or FAIL
30793*/
30794WDI_Status WDI_HT40OBSSScanInd
30795(
30796 WDI_HT40ObssScanParamsType *pWdiReq
30797)
30798{
30799 WDI_EventInfoType wdiEventData;
30800
30801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30802 "%s", __func__);
30803 /*-------------------------------------------------------------------------
30804 Sanity Check
30805 ------------------------------------------------------------------------*/
30806 if (eWLAN_PAL_FALSE == gWDIInitialized)
30807 {
30808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30809 "WDI API call before module is initialized - Fail request!");
30810
30811 return WDI_STATUS_E_NOT_ALLOWED;
30812 }
30813
30814 /*-------------------------------------------------------------------------
30815 Fill in Event data and post to the Main FSM
30816 ------------------------------------------------------------------------*/
30817 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30818 wdiEventData.pEventData = pWdiReq;
30819 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30820 wdiEventData.pCBfnc = NULL;
30821 wdiEventData.pUserData = NULL;
30822
30823
30824 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30825}
30826
30827/**
30828 @brief Process OBSS Stop scan result
30829
30830 @param pWDICtx: pointer to the WLAN DAL context
30831 pEventData: pointer to the event information structure
30832
30833 @see
30834 @return Result of the function call
30835*/
30836WDI_Status
30837WDI_ProcessHT40OBSSStopScanInd
30838(
30839 WDI_ControlBlockType* pWDICtx,
30840 WDI_EventInfoType* pEventData
30841)
30842{
30843 wpt_uint8* pSendBuffer = NULL;
30844 wpt_uint16 usDataOffset = 0;
30845 wpt_uint16 usSendSize = 0;
30846 wpt_uint16 usLen = 0;
30847 wpt_uint8 *wdiBssIdx = 0;
30848 tANI_U8 *bssIdx = 0;
30849 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30850
30851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30852
30853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30854 "%s", __func__);
30855
30856 /*-------------------------------------------------------------------------
30857 Sanity check
30858 -------------------------------------------------------------------------*/
30859 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30860 {
30861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30862 "%s: Invalid parameters", __func__);
30863 WDI_ASSERT(0);
30864 return WDI_STATUS_E_FAILURE;
30865 }
30866 bssIdx = (wpt_uint8*)pEventData->pEventData;
30867 /*-----------------------------------------------------------------------
30868 Get message buffer
30869 -----------------------------------------------------------------------*/
30870
30871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30872 WDI_STOP_HT40_OBSS_SCAN_IND,
30873 sizeof(tANI_U8),
30874 &pSendBuffer, &usDataOffset, &usSendSize))||
30875 ( usSendSize < (usDataOffset + usLen )))
30876 {
30877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30878 "Unable to get send buffer in HT40 OBSS Start req %p ",
30879 pEventData);
30880 WDI_ASSERT(0);
30881 return WDI_STATUS_E_FAILURE;
30882 }
30883
30884 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30885 bssIdx = wdiBssIdx;
30886
30887 pWDICtx->pReqStatusUserData = NULL;
30888 pWDICtx->pfncRspCB = NULL;
30889
30890 /*-------------------------------------------------------------------------
30891 Send DHCP Start Indication to HAL
30892 -------------------------------------------------------------------------*/
30893 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30894 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30895} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30896
30897/**
30898 @brief WDI_HT40OBSSStopScanInd
30899 This API is called to start OBSS scan
30900 @param pWdiReq : pointer to get ind param
30901 @see
30902 @return SUCCESS or FAIL
30903*/
30904WDI_Status WDI_HT40OBSSStopScanInd
30905(
30906 wpt_uint8 bssIdx
30907)
30908{
30909 WDI_EventInfoType wdiEventData;
30910
30911 /*-------------------------------------------------------------------------
30912 Sanity Check
30913 ------------------------------------------------------------------------*/
30914 if (eWLAN_PAL_FALSE == gWDIInitialized)
30915 {
30916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30917 "WDI API call before module is initialized - Fail request!");
30918
30919 return WDI_STATUS_E_NOT_ALLOWED;
30920 }
30921
30922 /*-------------------------------------------------------------------------
30923 Fill in Event data and post to the Main FSM
30924 ------------------------------------------------------------------------*/
30925 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30926 wdiEventData.pEventData = &bssIdx;
30927 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30928 wdiEventData.pCBfnc = NULL;
30929 wdiEventData.pUserData = NULL;
30930
30931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30932}
30933
c_hpothu86041002014-04-14 19:06:51 +053030934WDI_Status
30935WDI_printRegInfo
30936(
30937 WDI_ControlBlockType* pWDICtx,
30938 WDI_EventInfoType* pEventData
30939)
30940{
30941 tHalRegDebugInfo *pRegTable;
30942 tHalRegDebugInfoParams *pRegParams;
30943 uint32 cnt=0;
30944
30945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30946 "%s: ", __func__);
30947 /*-------------------------------------------------------------------------
30948 Sanity check
30949 -------------------------------------------------------------------------*/
30950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30951 ( NULL == pEventData->pEventData))
30952 {
30953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30954 "%s: Invalid parameters", __func__);
30955 WDI_ASSERT(0);
30956 return WDI_STATUS_E_FAILURE;
30957 }
30958
30959 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30960
30961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30962 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30963 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30964
30965 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30966
30967 if (pRegParams->regCount <= 0)
30968 {
30969 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30970 "%s incorrect parameters passed", __func__);
30971 return WDI_STATUS_E_FAILURE;
30972 }
30973
30974 while(pRegParams->regCount--)
30975 {
30976 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30977 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30978 cnt++;
30979 }
30980
30981 return WDI_STATUS_SUCCESS;
30982}
c_hpothu92367912014-05-01 15:18:17 +053030983
30984/*
Abhishek Singh66c16762014-08-14 19:13:19 +053030985 * FUNCTION: WDI_delBaInd
30986 * send the delBA to peer.
30987 */
30988
30989WDI_Status
30990WDI_delBaInd
30991(
30992 WDI_ControlBlockType* pWDICtx,
30993 WDI_EventInfoType* pEventData
30994
30995)
30996{
30997 tHalWlanDelBaIndMsg halDelBaInd;
30998 WDI_LowLevelIndType wdiInd;
30999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31000
31001 /*-------------------------------------------------------------------------
31002 Sanity check
31003 -------------------------------------------------------------------------*/
31004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31005 ( NULL == pEventData->pEventData))
31006 {
31007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31008 "%s: Invalid parameters", __func__);
31009 WDI_ASSERT(0);
31010 return WDI_STATUS_E_FAILURE;
31011 }
31012
31013 /*-------------------------------------------------------------------------
31014 Extract indication and send it to UMAC
31015 -------------------------------------------------------------------------*/
31016
31017 /* Parameters need to be unpacked according to HAL struct*/
31018 wpalMemoryCopy( &halDelBaInd,
31019 pEventData->pEventData,
31020 sizeof(halDelBaInd));
31021
31022 /*Fill in the indication parameters*/
31023 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31024
31025 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31026 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31027 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31028
31029 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31030 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31031 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31032
31033 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31034 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31035 if ( pWDICtx->wdiLowLevelIndCB )
31036 {
31037 /*Notify UMAC*/
31038 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31039 }
31040
31041 return WDI_STATUS_SUCCESS;
31042
31043
31044}
31045
31046/*
c_hpothu92367912014-05-01 15:18:17 +053031047 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31048 * send the response to PE with beacon miss count
31049 * received from WDI.
31050 */
31051WDI_Status
31052WDI_ProcessGetBcnMissRateRsp
31053(
31054 WDI_ControlBlockType* pWDICtx,
31055 WDI_EventInfoType* pEventData
31056)
31057{
31058 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31059 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31060
31061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31062 "In %s",__func__);
31063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31064
31065 /*-------------------------------------------------------------------------
31066 Sanity check
31067 -------------------------------------------------------------------------*/
31068 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31069 ( NULL == pEventData->pEventData))
31070 {
31071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31072 "%s: Invalid parameters", __func__);
31073 WDI_ASSERT(0);
31074 return WDI_STATUS_E_FAILURE;
31075 }
31076
31077 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31078 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31079
31080 /*Notify UMAC*/
31081 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31082 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31083 return WDI_STATUS_SUCCESS;
31084}
31085
31086/*
31087 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31088 * Request to WDI to get missed beacon rate.
31089 */
31090WDI_Status
31091WDI_ProcessGetBcnMissRateReq
31092(
31093 WDI_ControlBlockType* pWDICtx,
31094 WDI_EventInfoType* pEventData
31095)
31096{
31097 wpt_uint8* pSendBuffer = NULL;
31098 wpt_uint16 usDataOffset = 0;
31099 wpt_uint16 usSendSize = 0;
31100 wpt_uint8 ucCurrentBSSSesIdx = 0;
31101 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031102 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31103 tHalBcnMissRateReqParams halBcnMissRateReq;
31104
31105/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31106
31107 /*-------------------------------------------------------------------------
31108 Sanity check
31109 -------------------------------------------------------------------------*/
31110 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31111 ( NULL == pEventData->pCBfnc ) )
31112 {
31113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31114 "%s: Invalid parameters", __func__);
31115 WDI_ASSERT(0);
31116 return WDI_STATUS_E_FAILURE;
31117 }
31118
31119 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31120
31121 wpalMutexAcquire(&pWDICtx->wptMutex);
31122
31123 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31124 pEventData->pEventData, &pBSSSes);
31125 if ( NULL == pBSSSes )
31126 {
31127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31128 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031129 MAC_ADDRESS_STR, __func__,
31130 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031131 wpalMutexRelease(&pWDICtx->wptMutex);
31132 return WDI_STATUS_E_NOT_ALLOWED;
31133 }
31134 wpalMutexRelease(&pWDICtx->wptMutex);
31135
31136 /*-----------------------------------------------------------------------
31137 Get message buffer
31138 -----------------------------------------------------------------------*/
31139 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31140 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31141 sizeof(tHalBcnMissRateReqParams),
31142 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31143 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31144 {
31145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31146 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31147 pEventData);
31148 WDI_ASSERT(0);
31149 return WDI_STATUS_E_FAILURE;
31150 }
31151
31152 pWDICtx->wdiReqStatusCB = NULL;
31153 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31154
31155 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31156
31157 wpalMemoryCopy( pSendBuffer+usDataOffset,
31158 &halBcnMissRateReq,
31159 sizeof(tHalBcnMissRateReqParams));
31160 /*-------------------------------------------------------------------------
31161 Send Get STA Request to HAL
31162 -------------------------------------------------------------------------*/
31163 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31164 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31165}
31166
31167/**
31168 @brief WDI_GetBcnMissRate
31169
31170 @param pUserData: user data will be passed back with the
31171 callback
31172 WDI_GetBcnMissRateCb: callback for passing back the response
31173 of the get stats operation received from the device
31174 bssid: bssid, to send bssIdx to FW
31175
31176 @return SUCCESS or FAIL
31177*/
31178WDI_Status WDI_GetBcnMissRate( void *pUserData,
31179 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31180 tANI_U8 *bssid )
31181{
31182 WDI_EventInfoType wdiEventData;
31183
31184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31185
31186 /*------------------------------------------------------------------------
31187 Sanity Check
31188 ------------------------------------------------------------------------*/
31189 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31190 {
31191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31192 "WDI API call before module is initialized - Fail request");
31193
31194 return WDI_STATUS_E_NOT_ALLOWED;
31195 }
31196
31197 /*------------------------------------------------------------------------
31198 Fill in Event data and post to the Main FSM
31199 ------------------------------------------------------------------------*/
31200 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31201 wdiEventData.pEventData = bssid;
31202 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31203 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31204 wdiEventData.pUserData = pUserData;
31205
31206 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31207}
Abhishek Singh85b74712014-10-08 11:38:19 +053031208
31209/*
31210 * FUNCTION: WDI_ProcessGetFwStatsRsp
31211 * send the response with FW stats asked.
31212 */
31213WDI_Status
31214 WDI_ProcessGetFwStatsRsp
31215(
31216 WDI_ControlBlockType* pWDICtx,
31217 WDI_EventInfoType* pEventData
31218)
31219{
31220 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31221 tpHalfwStatsRspParams pHalFwstatsRsp;
31222 WDI_FWStatsResults fwStats;
31223
31224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31225
31226 /*-------------------------------------------------------------------------
31227 Sanity check
31228 -------------------------------------------------------------------------*/
31229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31230 ( NULL == pEventData->pEventData))
31231 {
31232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31233 "%s: Invalid parameters", __func__);
31234 WDI_ASSERT(0);
31235 return WDI_STATUS_E_FAILURE;
31236 }
31237 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31238 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31239
31240 if(pHalFwstatsRsp->length)
31241 {
31242 switch( pHalFwstatsRsp->type )
31243 {
31244 case FW_UBSP_STATS:
31245 {
31246 ubspFwStats *ubspStatsfromFw;
31247
31248 fwStats.type = pHalFwstatsRsp->type;
31249 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31250 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31251 ubspStatsfromFw->ubsp_enter_cnt;
31252 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31253 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31254 }
31255 break;
31256 default:
31257 {
31258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31259 "%s: No handling for stats type %d", __func__,
31260 pHalFwstatsRsp->type);
31261 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31262 NULL, pWDICtx->pRspCBUserData);
31263 return WDI_STATUS_E_FAILURE;
31264 }
31265 }
31266 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31267 }
31268 else
31269 {
31270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31271 "%s: Length = 0 for type %d return failure ", __func__,
31272 pHalFwstatsRsp->type);
31273 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31274 NULL, pWDICtx->pRspCBUserData);
31275 return WDI_STATUS_E_FAILURE;
31276 }
31277 return WDI_STATUS_SUCCESS;
31278}
31279
31280/*
31281 * FUNCTION: WDI_ProcessGetFwStatsReq
31282 * Request to WDI to get FW Stats.
31283 */
31284WDI_Status
31285 WDI_ProcessGetFwStatsReq
31286(
31287 WDI_ControlBlockType* pWDICtx,
31288 WDI_EventInfoType* pEventData
31289)
31290{
31291 wpt_uint8* pSendBuffer = NULL;
31292 wpt_uint16 usDataOffset = 0;
31293 wpt_uint16 usSendSize = 0;
31294 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31295 tHalfwStatsReqParams halFwStatsReq;
31296
31297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31298
31299 /*-------------------------------------------------------------------------
31300 Sanity check
31301 -------------------------------------------------------------------------*/
31302 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31303 ( NULL == pEventData->pCBfnc ) )
31304 {
31305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31306 "%s: Invalid parameters", __func__);
31307 WDI_ASSERT(0);
31308 return WDI_STATUS_E_FAILURE;
31309 }
31310
31311 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31312
31313 /*-----------------------------------------------------------------------
31314 Get message buffer
31315 -----------------------------------------------------------------------*/
31316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31317 pWDICtx, WDI_GET_FW_STATS_REQ,
31318 sizeof(tHalfwStatsReqParams),
31319 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31320 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31321 {
31322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31323 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31324 pEventData);
31325 WDI_ASSERT(0);
31326 return WDI_STATUS_E_FAILURE;
31327 }
31328
31329 pWDICtx->wdiReqStatusCB = NULL;
31330 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31331 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31332 wpalMemoryCopy( pSendBuffer+usDataOffset,
31333 &halFwStatsReq,
31334 sizeof(tHalfwStatsReqParams));
31335 /*-------------------------------------------------------------------------
31336 Send Get STA Request to HAL
31337 -------------------------------------------------------------------------*/
31338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31339 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31340}
31341
Sunil Duttbd736ed2014-05-26 21:19:41 +053031342#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31343
31344/**
31345 @brief WDI_LLStatsSetReq
31346 This API is called to set link layer stats request in FW
31347
31348 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31349 wdiLLStatsSetRspCb : set link layer stats resp callback
31350 usrData : Client context
31351 @see
31352 @return SUCCESS or FAIL
31353*/
31354WDI_Status
31355WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31356 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31357 void* pUserData)
31358{
31359 WDI_EventInfoType wdiEventData;
31360
31361 /*------------------------------------------------------------------------
31362 Sanity Check
31363 ------------------------------------------------------------------------*/
31364 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31365 {
31366 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31367 "WDI API call before module is initialized - Fail request");
31368
31369 return WDI_STATUS_E_NOT_ALLOWED;
31370 }
31371
31372 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31373 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31374 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31375 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31376 wdiEventData.pUserData = pUserData;
31377
31378 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31379}
31380
31381/**
31382 @brief WDI_ProcessLLStatsSetReq -
31383 Set Link Layer Stats request to FW
31384
31385 @param pWDICtx : wdi context
31386 pEventData : indication data
31387
31388 @see
31389 @return none
31390*/
31391WDI_Status
31392WDI_ProcessLLStatsSetReq
31393(
31394 WDI_ControlBlockType* pWDICtx,
31395 WDI_EventInfoType* pEventData
31396)
31397{
31398 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31399 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31400 wpt_uint8* pSendBuffer = NULL;
31401 wpt_uint16 usSendSize = 0;
31402 wpt_uint16 usDataOffset = 0;
31403 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31404
31405 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31406 ( NULL == pEventData->pCBfnc ))
31407 {
31408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31409 "%s: Invalid parameters", __func__);
31410 WDI_ASSERT(0);
31411 return WDI_STATUS_E_FAILURE;
31412 }
31413
31414 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31415 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31416
31417 /*-----------------------------------------------------------------------
31418 Get message buffer
31419 ! TO DO : proper conversion into the HAL Message Request Format
31420 -----------------------------------------------------------------------*/
31421 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31422 pWDICtx,
31423 WDI_LL_STATS_SET_REQ,
31424 sizeof(tHalMacLlSetStatsReqParams),
31425 &pSendBuffer, &usDataOffset,
31426 &usSendSize))||
31427 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31428 {
31429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31430 "Unable to get send buffer in %s %p %p %p", __func__,
31431 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31432 WDI_ASSERT(0);
31433 return WDI_STATUS_E_FAILURE;
31434 }
31435
31436
Dino Mycled3d50022014-07-07 12:58:25 +053031437 /* Need to fill in the self STA Index */
31438 if ( WDI_STATUS_SUCCESS !=
31439 WDI_STATableFindStaidByAddr(pWDICtx,
31440 pwdiLLStatsSetReqParams->macAddr,
31441 &halLLStatsSetParams.sta_id))
31442 {
31443 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31444 MAC_ADDRESS_STR
31445 ": This station does not exist in the WDI Station Table",
31446 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31447
31448 wpalMemoryFree(pSendBuffer);
31449 return WDI_STATUS_E_FAILURE;
31450 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031451
31452 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031453 halLLStatsSetParams.mpdu_size_threshold =
31454 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31455 halLLStatsSetParams.aggressive_statistics_gathering =
31456 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31457
31458 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31459 " halLLStatsSetParams.req_id = %u",
31460 halLLStatsSetParams.req_id);
31461 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31462 " halLLStatsSetParams.sta_id = %u",
31463 halLLStatsSetParams.sta_id);
31464 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31465 " halLLStatsSetParams.mpdu_size_threshold = %u",
31466 halLLStatsSetParams.mpdu_size_threshold);
31467 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31468 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31469 halLLStatsSetParams.aggressive_statistics_gathering);
31470
31471 wpalMemoryCopy(pSendBuffer+usDataOffset,
31472 &halLLStatsSetParams,
31473 sizeof(halLLStatsSetParams));
31474
31475 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31476
31477 /*-------------------------------------------------------------------------
31478 Send Clear Link Layer Stats Request to HAL
31479 -------------------------------------------------------------------------*/
31480 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31481 wdiLLStatsSetCb, pEventData->pUserData,
31482 WDI_LL_STATS_SET_RSP);
31483}
31484
31485/**
31486 @brief WDI_LLStatsGetReq
31487 This API is called to get link layer stats request in FW
31488
31489 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31490 wdiLLStatsGetRspCb : get link layer stats resp callback
31491 usrData : Client context
31492 @see
31493 @return SUCCESS or FAIL
31494*/
31495WDI_Status
31496WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31497 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31498 void* pUserData)
31499{
31500 WDI_EventInfoType wdiEventData;
31501
31502 /*------------------------------------------------------------------------
31503 Sanity Check
31504 ------------------------------------------------------------------------*/
31505 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31506 {
31507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31508 "WDI API call before module is initialized - Fail request");
31509
31510 return WDI_STATUS_E_NOT_ALLOWED;
31511 }
31512
31513 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31514 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31515 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31516 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31517 wdiEventData.pUserData = pUserData;
31518
31519 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31520}
31521
31522/**
31523 @brief WDI_ProcessLLStatsGetReq -
31524 Get Link Layer Stats request to FW
31525
31526 @param pWDICtx : wdi context
31527 pEventData : indication data
31528
31529 @see
31530 @return none
31531*/
31532WDI_Status
31533WDI_ProcessLLStatsGetReq
31534(
31535 WDI_ControlBlockType* pWDICtx,
31536 WDI_EventInfoType* pEventData
31537)
31538{
31539 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31540 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31541 wpt_uint8* pSendBuffer = NULL;
31542 wpt_uint16 usSendSize = 0;
31543 wpt_uint16 usDataOffset = 0;
31544 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31545
31546 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31547 ( NULL == pEventData->pCBfnc ))
31548 {
31549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31550 "%s: Invalid parameters", __func__);
31551 WDI_ASSERT(0);
31552 return WDI_STATUS_E_FAILURE;
31553 }
31554
31555 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31556 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31557
31558 /*-----------------------------------------------------------------------
31559 Get message buffer
31560 ! TO DO : proper conversion into the HAL Message Request Format
31561 -----------------------------------------------------------------------*/
31562 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31563 pWDICtx,
31564 WDI_LL_STATS_GET_REQ,
31565 sizeof(tHalMacLlGetStatsReqParams),
31566 &pSendBuffer, &usDataOffset,
31567 &usSendSize))||
31568 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31569 {
31570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31571 "Unable to get send buffer in %s %p %p %p", __func__,
31572 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31573 WDI_ASSERT(0);
31574 return WDI_STATUS_E_FAILURE;
31575 }
Dino Mycled3d50022014-07-07 12:58:25 +053031576 /* Need to fill in the self STA Index */
31577 if ( WDI_STATUS_SUCCESS !=
31578 WDI_STATableFindStaidByAddr(pWDICtx,
31579 pwdiLLStatsGetReqParams->macAddr,
31580 &halLLStatsGetParams.sta_id))
31581 {
31582 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31583 MAC_ADDRESS_STR
31584 ": This station does not exist in the WDI Station Table",
31585 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31586
31587 wpalMemoryFree(pSendBuffer);
31588 return WDI_STATUS_E_FAILURE;
31589 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031590
31591 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031592 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31593
31594 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31595 " halLLStatsGetParams.req_id = %u",
31596 halLLStatsGetParams.req_id);
31597 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31598 " halLLStatsGetParams.staId = %u",
31599 halLLStatsGetParams.sta_id);
31600 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31601 " halLLStatsGetParams.Mask = %u",
31602 halLLStatsGetParams.param_id_mask);
31603
31604 wpalMemoryCopy(pSendBuffer+usDataOffset,
31605 &halLLStatsGetParams,
31606 sizeof(halLLStatsGetParams));
31607
31608 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31609
31610 /*-------------------------------------------------------------------------
31611 Send Clear Link Layer Stats Request to HAL
31612 -------------------------------------------------------------------------*/
31613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31614 wdiLLStatsGetCb, pEventData->pUserData,
31615 WDI_LL_STATS_GET_RSP);
31616}
31617
31618/**
31619 @brief WDI_LLStatsClearReq
31620 This API is called to clear link layer stats request in FW
31621
31622 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31623 wdiLLStatsSetRspCb : clear link layer stats resp callback
31624 usrData : Client context
31625 @see
31626 @return SUCCESS or FAIL
31627*/
31628WDI_Status
31629WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31630 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31631 void* pUserData)
31632{
31633 WDI_EventInfoType wdiEventData;
31634
31635 /*------------------------------------------------------------------------
31636 Sanity Check
31637 ------------------------------------------------------------------------*/
31638 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31639 {
31640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31641 "WDI API call before module is initialized - Fail request");
31642
31643 return WDI_STATUS_E_NOT_ALLOWED;
31644 }
31645
31646 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31647 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31648 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31649 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31650 wdiEventData.pUserData = pUserData;
31651
31652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31653 "%s:%d Enter", __func__, __LINE__);
31654
31655 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31656}
31657
31658/**
31659 @brief WDI_ProcessLLStatsClearReq -
31660 Clear Link Layer Stats request to FW
31661
31662 @param pWDICtx : wdi context
31663 pEventData : indication data
31664
31665 @see
31666 @return none
31667*/
31668WDI_Status
31669WDI_ProcessLLStatsClearReq
31670(
31671 WDI_ControlBlockType* pWDICtx,
31672 WDI_EventInfoType* pEventData
31673)
31674{
31675 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31676 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31677 wpt_uint8* pSendBuffer = NULL;
31678 wpt_uint16 usSendSize = 0;
31679 wpt_uint16 usDataOffset = 0;
31680 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31681
31682 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31683 ( NULL == pEventData->pCBfnc ))
31684 {
31685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31686 "%s: Invalid parameters", __func__);
31687 WDI_ASSERT(0);
31688 return WDI_STATUS_E_FAILURE;
31689 }
31690
31691 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31692 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31693
31694 /*-----------------------------------------------------------------------
31695 Get message buffer
31696 ! TO DO : proper conversion into the HAL Message Request Format
31697 -----------------------------------------------------------------------*/
31698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31699 pWDICtx,
31700 WDI_LL_STATS_CLEAR_REQ,
31701 sizeof(tHalMacLlClearStatsReqParams),
31702 &pSendBuffer, &usDataOffset,
31703 &usSendSize))||
31704 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31705 {
31706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31707 "Unable to get send buffer in %s %p %p %p", __func__,
31708 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31709 WDI_ASSERT(0);
31710 return WDI_STATUS_E_FAILURE;
31711 }
Dino Mycled3d50022014-07-07 12:58:25 +053031712 /* Need to fill in the self STA Index */
31713 if ( WDI_STATUS_SUCCESS !=
31714 WDI_STATableFindStaidByAddr(pWDICtx,
31715 pwdiLLStatsClearReqParams->macAddr,
31716 &halLLStatsClearParams.sta_id))
31717 {
31718 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31719 MAC_ADDRESS_STR
31720 ": This station does not exist in the WDI Station Table",
31721 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
31722
31723 wpalMemoryFree(pSendBuffer);
31724 return WDI_STATUS_E_FAILURE;
31725 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031726
31727 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031728 halLLStatsClearParams.stats_clear_req_mask =
31729 pwdiLLStatsClearReqParams->statsClearReqMask;
31730 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31731
31732 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31733 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31734 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31735 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31736 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31737 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31738 halLLStatsClearParams.stats_clear_req_mask);
31739 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31740 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31741
31742 wpalMemoryCopy(pSendBuffer+usDataOffset,
31743 &halLLStatsClearParams,
31744 sizeof(halLLStatsClearParams));
31745
31746 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31747
31748 /*-------------------------------------------------------------------------
31749 Send Clear Link Layer Stats Request to HAL
31750 -------------------------------------------------------------------------*/
31751 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31752 wdiLLStatsClearCb, pEventData->pUserData,
31753 WDI_LL_STATS_CLEAR_RSP);
31754}
31755#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031756
Abhishek Singh85b74712014-10-08 11:38:19 +053031757WDI_Status WDI_FWStatsGetReq( void* pUserData,
31758 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
31759 wpt_uint32 stats)
31760{
31761 WDI_EventInfoType wdiEventData;
31762
31763 /*------------------------------------------------------------------------
31764 Sanity Check
31765 ------------------------------------------------------------------------*/
31766 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31767 {
31768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31769 "WDI API call before module is initialized - Fail request");
31770 return WDI_STATUS_E_NOT_ALLOWED;
31771 }
31772 /*------------------------------------------------------------------------
31773 Fill in Event data and post to the Main FSM
31774 ------------------------------------------------------------------------*/
31775 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
31776 wdiEventData.pEventData = (void *)&stats;
31777 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
31778 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
31779 wdiEventData.pUserData = pUserData;
31780
31781 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31782
31783}
31784
Dino Mycle41bdc942014-06-10 11:30:24 +053031785#ifdef WLAN_FEATURE_EXTSCAN
31786
31787/**
31788 @brief Process EXTSCAN BUffer full indication from FW
31789
31790 @param pWDICtx: pointer to the WLAN DAL context
31791 pEventData: pointer to the event information structure
31792
31793 @see
31794 @return Result of the function call
31795*/
31796WDI_Status
31797WDI_ProcessEXTScanProgressInd
31798(
31799 WDI_ControlBlockType* pWDICtx,
31800 WDI_EventInfoType* pEventData
31801)
31802{
31803 WDI_LowLevelIndType wdiInd;
31804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31805
31806 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31807 "%s: ", __func__);
31808
31809 /* sanity check */
31810 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31811 ( NULL == pEventData->pEventData))
31812 {
31813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31814 "%s: Invalid parameters", __func__);
31815 WDI_ASSERT(0);
31816 return WDI_STATUS_E_FAILURE;
31817 }
31818
31819 /* Fill in the indication parameters */
31820 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31821
31822 /* extract response and send it to UMAC */
31823 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31824
31825 /* Notify UMAC */
31826 if (pWDICtx->wdiLowLevelIndCB)
31827 {
31828 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31829 }
31830 else
31831 {
Dino Mycled3d50022014-07-07 12:58:25 +053031832 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053031833 "%s: WDILowLevelIndCb is null", __func__);
31834 WDI_ASSERT(0);
31835 return WDI_STATUS_E_FAILURE;
31836 }
31837 return WDI_STATUS_SUCCESS;
31838
31839} /* End of WDI_ProcessEXTScanProgressInd */
31840
31841
31842/**
31843 @brief Process EXTScan Scan Available indication from FW
31844
31845 @param pWDICtx: pointer to the WLAN DAL context
31846 pEventData: pointer to the event information structure
31847
31848 @see
31849 @return Result of the function call
31850*/
31851WDI_Status
31852WDI_ProcessEXTScanScanAvailableInd
31853(
31854 WDI_ControlBlockType* pWDICtx,
31855 WDI_EventInfoType* pEventData
31856)
31857{
31858 WDI_LowLevelIndType wdiInd;
31859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31860
31861 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31862 "%s: ", __func__);
31863
31864 /* sanity check */
31865 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31866 ( NULL == pEventData->pEventData))
31867 {
31868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31869 "%s: Invalid parameters", __func__);
31870 WDI_ASSERT(0);
31871 return WDI_STATUS_E_FAILURE;
31872 }
31873
31874
31875
31876 /* Fill in the indication parameters */
31877 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
31878
31879 /* extract response and send it to UMAC */
31880 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31881
31882 /* Notify UMAC */
31883 if (pWDICtx->wdiLowLevelIndCB)
31884 {
31885 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31886 }
31887 else
31888 {
31889 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31890 "%s: WDILowLevelIndCb is null", __func__);
31891 WDI_ASSERT(0);
31892 return WDI_STATUS_E_FAILURE;
31893 }
31894 return WDI_STATUS_SUCCESS;
31895} /* End of WDI_ProcessEXTScanScanDoneInd */
31896
31897/**
31898 @brief Process EXTScan Result Indication indication from FW
31899
31900 @param pWDICtx: pointer to the WLAN DAL context
31901 pEventData: pointer to the event information structure
31902
31903 @see
31904 @return Result of the function call
31905*/
31906WDI_Status
31907WDI_ProcessEXTScanResultInd
31908(
31909 WDI_ControlBlockType* pWDICtx,
31910 WDI_EventInfoType* pEventData
31911)
31912{
31913 WDI_LowLevelIndType wdiInd;
31914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31915
31916 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31917 "%s: ", __func__);
31918
31919 /* sanity check */
31920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31921 ( NULL == pEventData->pEventData))
31922 {
31923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31924 "%s: Invalid parameters", __func__);
31925 WDI_ASSERT(0);
31926 return WDI_STATUS_E_FAILURE;
31927 }
31928
31929 /* Fill in the indication parameters */
31930 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
31931
31932 /* extract response and send it to UMAC */
31933 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31934
31935 /* Notify UMAC */
31936 if (pWDICtx->wdiLowLevelIndCB)
31937 {
31938 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31939 }
31940 else
31941 {
31942 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31943 "%s: WDILowLevelIndCb is null", __func__);
31944 WDI_ASSERT(0);
31945 return WDI_STATUS_E_FAILURE;
31946 }
31947 return WDI_STATUS_SUCCESS;
31948} /* End of WDI_ProcessEXTScanResultInd */
31949
31950/**
31951 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
31952
31953 @param pWDICtx: pointer to the WLAN DAL context
31954 pEventData: pointer to the event information structure
31955
31956 @see
31957 @return Result of the function call
31958*/
31959WDI_Status
31960WDI_ProcessEXTScanBssidHotListResultInd
31961(
31962 WDI_ControlBlockType* pWDICtx,
31963 WDI_EventInfoType* pEventData
31964)
31965{
31966 WDI_LowLevelIndType wdiInd;
31967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31968
31969 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31970 "%s: ", __func__);
31971
31972 /* sanity check */
31973 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31974 ( NULL == pEventData->pEventData))
31975 {
31976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31977 "%s: Invalid parameters", __func__);
31978 WDI_ASSERT(0);
31979 return WDI_STATUS_E_FAILURE;
31980 }
31981
31982 /* Fill in the indication parameters */
31983 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
31984
31985 /* extract response and send it to UMAC */
31986 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31987
31988 /* Notify UMAC */
31989 if (pWDICtx->wdiLowLevelIndCB)
31990 {
31991 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31992 }
31993 else
31994 {
31995 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31996 "%s: WDILowLevelIndCb is null", __func__);
31997 WDI_ASSERT(0);
31998 return WDI_STATUS_E_FAILURE;
31999 }
32000 return WDI_STATUS_SUCCESS;
32001} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32002
32003/**
32004 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32005
32006 @param pWDICtx: pointer to the WLAN DAL context
32007 pEventData: pointer to the event information structure
32008
32009 @see
32010 @return Result of the function call
32011*/
32012WDI_Status
32013WDI_ProcessEXTScanSignfRssiResultInd
32014(
32015 WDI_ControlBlockType* pWDICtx,
32016 WDI_EventInfoType* pEventData
32017)
32018{
32019 WDI_LowLevelIndType wdiInd;
32020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32021
32022 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32023 "%s: ", __func__);
32024
32025 /* sanity check */
32026 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32027 ( NULL == pEventData->pEventData))
32028 {
32029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32030 "%s: Invalid parameters", __func__);
32031 WDI_ASSERT(0);
32032 return WDI_STATUS_E_FAILURE;
32033 }
32034
32035 /* Fill in the indication parameters */
32036 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32037
32038 /* extract response and send it to UMAC */
32039 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32040
32041 /* Notify UMAC */
32042 if (pWDICtx->wdiLowLevelIndCB)
32043 {
32044 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32045 }
32046 else
32047 {
32048 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32049 "%s: WDILowLevelIndCb is null", __func__);
32050 WDI_ASSERT(0);
32051 return WDI_STATUS_E_FAILURE;
32052 }
32053 return WDI_STATUS_SUCCESS;
32054} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32055
32056/**
32057 @brief WDI_EXTScanGetCapabilitiesReq
32058
32059 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32060 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32061 of the Req operation received from the device
32062 pUserData: user data will be passed back with the callback
32063
32064 @return SUCCESS or FAIL
32065*/
32066WDI_Status
32067WDI_EXTScanGetCapabilitiesReq(
32068 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32069 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32070 void* pUserData)
32071{
32072 WDI_EventInfoType wdiEventData;
32073
32074 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32075 "%s: %d ",__func__, __LINE__);
32076 /*------------------------------------------------------------------------
32077 Sanity Check
32078 ------------------------------------------------------------------------*/
32079 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32080 {
32081 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32082 "WDI API call before module is initialized - Fail request");
32083
32084 return WDI_STATUS_E_NOT_ALLOWED;
32085 }
32086
32087 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32088 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32089 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32090 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32091 wdiEventData.pUserData = pUserData;
32092
32093 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32094}
32095
32096/**
32097 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32098 Extended Scan Get Capability request to FW
32099
32100 @param pWDICtx : wdi context
32101 pEventData : indication data
32102
32103 @see
32104 @return none
32105*/
32106WDI_Status
32107WDI_ProcessEXTScanGetCapabilitiesReq
32108(
32109 WDI_ControlBlockType* pWDICtx,
32110 WDI_EventInfoType* pEventData
32111)
32112{
32113 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32114 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32115 wpt_uint8* pSendBuffer = NULL;
32116 wpt_uint16 usSendSize = 0;
32117 wpt_uint16 usDataOffset = 0;
32118 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32119
32120 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32121 "%s: %d Enter",__func__, __LINE__);
32122
32123 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32124 ( NULL == pEventData->pCBfnc ))
32125 {
32126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32127 "%s: Invalid parameters", __func__);
32128 WDI_ASSERT(0);
32129 return WDI_STATUS_E_FAILURE;
32130 }
32131
32132 pwdiEXTScanGetCapabilitiesReqParams =
32133 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32134 wdiEXTScanGetCapabilitiesRspCb =
32135 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32136
32137 /*-----------------------------------------------------------------------
32138 Get message buffer
32139 ! TO DO : proper conversion into the HAL Message Request Format
32140 -----------------------------------------------------------------------*/
32141 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32142 pWDICtx,
32143 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32144 sizeof(halEXTScanGetCapReqParams),
32145 &pSendBuffer, &usDataOffset,
32146 &usSendSize))||
32147 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32148 {
32149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32150 "Unable to get send buffer in %s %p %p %p", __func__,
32151 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32152 wdiEXTScanGetCapabilitiesRspCb);
32153 WDI_ASSERT(0);
32154 return WDI_STATUS_E_FAILURE;
32155 }
32156
32157 halEXTScanGetCapReqParams.requestId =
32158 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32159 halEXTScanGetCapReqParams.sessionId =
32160 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32161
32162 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32163 " requestId %u "
32164 " sessionId %u ",
32165 halEXTScanGetCapReqParams.requestId,
32166 halEXTScanGetCapReqParams.sessionId);
32167
32168 wpalMemoryCopy(pSendBuffer+usDataOffset,
32169 &halEXTScanGetCapReqParams,
32170 sizeof(halEXTScanGetCapReqParams));
32171
32172 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32173
32174
32175 /*-------------------------------------------------------------------------
32176 Send EXTScan Stop Request to HAL
32177 -------------------------------------------------------------------------*/
32178 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32179 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32180 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32181}
32182
32183/**
32184 @brief WDI_EXTScanGetCachedResultsReq
32185
32186 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32187 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32188 of the Req operation received from the device
32189 pUserData: user data will be passed back with the callback
32190
32191 @return SUCCESS or FAIL
32192*/
32193
32194WDI_Status
32195WDI_EXTScanGetCachedResultsReq(
32196 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32197 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32198 void* pUserData)
32199{
32200 WDI_EventInfoType wdiEventData;
32201
32202 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32203 "%s: %d Enter",__func__, __LINE__);
32204 /*------------------------------------------------------------------------
32205 Sanity Check
32206 ------------------------------------------------------------------------*/
32207 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32208 {
32209 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32210 "WDI API call before module is initialized - Fail request");
32211
32212 return WDI_STATUS_E_NOT_ALLOWED;
32213 }
32214
32215 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32216 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32217 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32218 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32219 wdiEventData.pUserData = pUserData;
32220
32221 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32222}
32223
32224/**
32225 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32226 Extended Scan Get Cached Result request to FW
32227
32228 @param pWDICtx : wdi context
32229 pEventData : indication data
32230
32231 @see
32232 @return none
32233*/
32234WDI_Status
32235WDI_ProcessEXTScanGetCachedResultsReq
32236(
32237 WDI_ControlBlockType* pWDICtx,
32238 WDI_EventInfoType* pEventData
32239)
32240{
32241 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32242 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32243 wpt_uint8* pSendBuffer = NULL;
32244 wpt_uint16 usSendSize = 0;
32245 wpt_uint16 usDataOffset = 0;
32246 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32247
32248 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32249 "%s: %d Enter",__func__, __LINE__);
32250
32251 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32252 ( NULL == pEventData->pCBfnc ))
32253 {
32254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32255 "%s: Invalid parameters", __func__);
32256 WDI_ASSERT(0);
32257 return WDI_STATUS_E_FAILURE;
32258 }
32259
32260 pwdiEXTScanGetCachedResultsReqParams =
32261 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32262 wdiEXTScanGetCachedResultsCb =
32263 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32264
32265 /*-----------------------------------------------------------------------
32266 Get message buffer
32267 ! TO DO : proper conversion into the HAL Message Request Format
32268 -----------------------------------------------------------------------*/
32269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32270 pWDICtx,
32271 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32272 sizeof(tHalExtScanGetScanReq),
32273 &pSendBuffer, &usDataOffset,
32274 &usSendSize))||
32275 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32276 {
32277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32278 "Unable to get send buffer in %s %p %p %p", __func__,
32279 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32280 wdiEXTScanGetCachedResultsCb);
32281 WDI_ASSERT(0);
32282 return WDI_STATUS_E_FAILURE;
32283 }
32284
32285 halEXTScanGetScanReqParams.requestId =
32286 pwdiEXTScanGetCachedResultsReqParams->requestId;
32287 halEXTScanGetScanReqParams.sessionId =
32288 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32289 halEXTScanGetScanReqParams.flush =
32290 pwdiEXTScanGetCachedResultsReqParams->flush;
32291
32292 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32293 " requestId %u "
32294 " sessionId %u "
32295 " flush %u ",
32296 halEXTScanGetScanReqParams.requestId,
32297 halEXTScanGetScanReqParams.sessionId,
32298 halEXTScanGetScanReqParams.flush);
32299
32300 wpalMemoryCopy(pSendBuffer+usDataOffset,
32301 &halEXTScanGetScanReqParams,
32302 sizeof(halEXTScanGetScanReqParams));
32303
32304 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32305
32306
32307 /*-------------------------------------------------------------------------
32308 Send EXTScan Stop Request to HAL
32309 -------------------------------------------------------------------------*/
32310 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32311 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32312 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32313}
32314
32315/**
32316 @brief WDI_EXTScanStopReq
32317
32318 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32319 WDI_EXTScanStopRspCb: callback for passing back the response
32320 of the Req operation received from the device
32321 pUserData: user data will be passed back with the callback
32322
32323 @return SUCCESS or FAIL
32324*/
32325WDI_Status
32326WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32327 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32328 void* pUserData)
32329{
32330 WDI_EventInfoType wdiEventData;
32331
32332 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32333 "%s: %d ",__func__, __LINE__);
32334 /*------------------------------------------------------------------------
32335 Sanity Check
32336 ------------------------------------------------------------------------*/
32337 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32338 {
32339 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32340 "WDI API call before module is initialized - Fail request");
32341
32342 return WDI_STATUS_E_NOT_ALLOWED;
32343 }
32344
32345 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32346 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32347 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32348 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32349 wdiEventData.pUserData = pUserData;
32350
32351 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32352}
32353
32354/**
32355 @brief WDI_ProcessEXTScanStopReq -
32356 Extended Scan Stop request to FW
32357
32358 @param pWDICtx : wdi context
32359 pEventData : indication data
32360
32361 @see
32362 @return none
32363*/
32364WDI_Status
32365WDI_ProcessEXTScanStopReq
32366(
32367 WDI_ControlBlockType* pWDICtx,
32368 WDI_EventInfoType* pEventData
32369)
32370{
32371 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32372 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32373 wpt_uint8* pSendBuffer = NULL;
32374 wpt_uint16 usSendSize = 0;
32375 wpt_uint16 usDataOffset = 0;
32376 tHalExtScanStopReq halEXTScanStopReqParams;
32377
32378 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32379 "%s: %d ",__func__, __LINE__);
32380
32381 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32382 ( NULL == pEventData->pCBfnc ))
32383 {
32384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32385 "%s: Invalid parameters", __func__);
32386 WDI_ASSERT(0);
32387 return WDI_STATUS_E_FAILURE;
32388 }
32389
32390 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32391 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32392
32393 /*-----------------------------------------------------------------------
32394 Get message buffer
32395 ! TO DO : proper conversion into the HAL Message Request Format
32396 -----------------------------------------------------------------------*/
32397 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32398 pWDICtx,
32399 WDI_EXTSCAN_STOP_REQ,
32400 sizeof(tHalExtScanStopReq),
32401 &pSendBuffer, &usDataOffset,
32402 &usSendSize))||
32403 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32404 {
32405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32406 "Unable to get send buffer in %s %p %p %p", __func__,
32407 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32408 WDI_ASSERT(0);
32409 return WDI_STATUS_E_FAILURE;
32410 }
32411
32412 halEXTScanStopReqParams.requestId =
32413 pwdiEXTScanStopReqParams->requestId;
32414 halEXTScanStopReqParams.sessionId =
32415 pwdiEXTScanStopReqParams->sessionId;
32416
32417 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32418 " halEXTScanStopReqParams.requestId %u "
32419 " halEXTScanStopReqParams.sessionId %u ",
32420 halEXTScanStopReqParams.requestId,
32421 halEXTScanStopReqParams.sessionId);
32422
32423 wpalMemoryCopy(pSendBuffer+usDataOffset,
32424 &halEXTScanStopReqParams,
32425 sizeof(halEXTScanStopReqParams));
32426
32427 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32428
32429
32430 /*-------------------------------------------------------------------------
32431 Send EXTScan Stop Request to HAL
32432 -------------------------------------------------------------------------*/
32433 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32434 wdiEXTScanStopCb, pEventData->pUserData,
32435 WDI_EXTSCAN_STOP_RSP);
32436}
32437
32438/**
32439 @brief WDI_EXTScanStartReq
32440
32441 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32442 WDI_EXTScanStartRspCb: callback for passing back the response
32443 of the Req operation received from the device
32444 pUserData: user data will be passed back with the callback
32445
32446 @return SUCCESS or FAIL
32447*/
32448WDI_Status
32449WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
32450 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
32451 void* pUserData)
32452{
32453 WDI_EventInfoType wdiEventData;
32454
32455 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32456 "%s: %d Enter",__func__, __LINE__);
32457 /*------------------------------------------------------------------------
32458 Sanity Check
32459 ------------------------------------------------------------------------*/
32460 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32461 {
32462 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32463 "WDI API call before module is initialized - Fail request");
32464
32465 return WDI_STATUS_E_NOT_ALLOWED;
32466 }
32467
32468 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
32469 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
32470 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
32471 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
32472 wdiEventData.pUserData = pUserData;
32473
32474 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32475}
32476
32477/**
32478 @brief WDI_ProcessEXTScanStartReq -
32479 Extended Scan Start Request to FW
32480
32481 @param pWDICtx : wdi context
32482 pEventData : indication data
32483
32484 @see
32485 @return none
32486*/
32487WDI_Status
32488WDI_ProcessEXTScanStartReq
32489(
32490 WDI_ControlBlockType* pWDICtx,
32491 WDI_EventInfoType* pEventData
32492)
32493{
32494 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
32495 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
32496 wpt_uint8* pSendBuffer = NULL;
32497 wpt_uint16 usSendSize = 0;
32498 wpt_uint16 usDataOffset = 0;
32499 tpHalExtScanStartReq pHalExtScanStartReqParams;
32500 int i = 0;
32501 int j = 0;
32502
32503 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32504 "%s: %d Enter",__func__, __LINE__);
32505
32506 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32507 ( NULL == pEventData->pCBfnc ))
32508 {
32509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32510 "%s: Invalid parameters", __func__);
32511 WDI_ASSERT(0);
32512 return WDI_STATUS_E_FAILURE;
32513 }
32514
32515 pwdiEXTScanStartReqParams =
32516 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
32517 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
32518
32519 /*-----------------------------------------------------------------------
32520 Get message buffer
32521 ! TO DO : proper conversion into the HAL Message Request Format
32522 -----------------------------------------------------------------------*/
32523 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32524 pWDICtx,
32525 WDI_EXTSCAN_START_REQ,
32526 sizeof(tHalExtScanStartReq),
32527 &pSendBuffer, &usDataOffset,
32528 &usSendSize))||
32529 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
32530 {
32531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32532 "Unable to get send buffer in %s %p %p %p", __func__,
32533 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
32534 WDI_ASSERT(0);
32535 return WDI_STATUS_E_FAILURE;
32536 }
32537
32538 pHalExtScanStartReqParams =
32539 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
32540
32541 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
32542 pHalExtScanStartReqParams->maxApPerScan =
32543 pwdiEXTScanStartReqParams->maxAPperScan;
32544 pHalExtScanStartReqParams->reportThreshold =
32545 pwdiEXTScanStartReqParams->reportThreshold;
32546 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
32547 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
32548 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
32549
32550 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
32551 {
32552 pHalExtScanStartReqParams->bucketData[i].bucketId =
32553 pwdiEXTScanStartReqParams->buckets[i].bucket;
32554 pHalExtScanStartReqParams->bucketData[i].channelBand =
32555 pwdiEXTScanStartReqParams->buckets[i].band;
32556 pHalExtScanStartReqParams->bucketData[i].period =
32557 pwdiEXTScanStartReqParams->buckets[i].period;
32558 pHalExtScanStartReqParams->bucketData[i].reportEvents =
32559 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
32560 pHalExtScanStartReqParams->bucketData[i].numChannels =
32561 pwdiEXTScanStartReqParams->buckets[i].numChannels;
32562
32563 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
32564 {
32565 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
32566 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
32567 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
32568 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
32569 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
32570 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
32571 }
32572
32573 }
32574
32575
32576 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32577 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
32578 " sessionId %u numBuckets%u ",
32579 pHalExtScanStartReqParams->basePeriod,
32580 pHalExtScanStartReqParams->maxApPerScan,
32581 pHalExtScanStartReqParams->reportThreshold,
32582 pHalExtScanStartReqParams->requestId,
32583 pHalExtScanStartReqParams->sessionId,
32584 pHalExtScanStartReqParams->numBuckets);
32585
32586 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
32587 {
32588 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
32589 " %d) bucketId %u channelBand %u period %u "
32590 " reportEvents %u numChannels %u ",i,
32591 pHalExtScanStartReqParams->bucketData[i].bucketId,
32592 pHalExtScanStartReqParams->bucketData[i].channelBand,
32593 pHalExtScanStartReqParams->bucketData[i].period,
32594 pHalExtScanStartReqParams->bucketData[i].reportEvents,
32595 pHalExtScanStartReqParams->bucketData[i].numChannels);
32596
32597 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
32598 {
32599 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32600 "%d) channel %u dwellTimeMs %u passive %u ",j,
32601 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
32602 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
32603 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
32604 }
32605
32606 }
32607
Dino Mycle41bdc942014-06-10 11:30:24 +053032608 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32609
32610 /*-------------------------------------------------------------------------
32611 Send EXTSCAN Start Request to HAL
32612 -------------------------------------------------------------------------*/
32613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32614 wdiEXTScanStartCb, pEventData->pUserData,
32615 WDI_EXTSCAN_START_RSP);
32616}
32617
32618/**
32619 @brief WDI_EXTScanSetBSSIDHotlistReq
32620
32621 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
32622 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
32623 of the Req operation received from the device
32624 pUserData: user data will be passed back with the callback
32625
32626 @return SUCCESS or FAIL
32627*/
32628WDI_Status
32629WDI_EXTScanSetBSSIDHotlistReq(
32630 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
32631 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
32632 void* pUserData)
32633{
32634 WDI_EventInfoType wdiEventData;
32635
32636 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32637 "%s: %d Enter ",__func__, __LINE__);
32638 /*------------------------------------------------------------------------
32639 Sanity Check
32640 ------------------------------------------------------------------------*/
32641 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32642 {
32643 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32644 "WDI API call before module is initialized - Fail request");
32645
32646 return WDI_STATUS_E_NOT_ALLOWED;
32647 }
32648
32649 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
32650 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
32651 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
32652 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
32653 wdiEventData.pUserData = pUserData;
32654
32655 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32656}
32657
32658/**
32659 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
32660 Extended Scan Set BSSSID Hotlist Request to FW
32661
32662 @param pWDICtx : wdi context
32663 pEventData : indication data
32664
32665 @see
32666 @return none
32667*/
32668WDI_Status
32669WDI_ProcessEXTScanSetBSSIDHotlistReq
32670(
32671 WDI_ControlBlockType* pWDICtx,
32672 WDI_EventInfoType* pEventData
32673)
32674{
32675 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32676 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32677 wpt_uint8* pSendBuffer = NULL;
32678 wpt_uint16 usSendSize = 0;
32679 wpt_uint16 usDataOffset = 0;
32680 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32681 int i;
32682
32683 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32684 "%s: %d Enter",__func__, __LINE__);
32685
32686 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32687 ( NULL == pEventData->pCBfnc ))
32688 {
32689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32690 "%s: Invalid parameters", __func__);
32691 WDI_ASSERT(0);
32692 return WDI_STATUS_E_FAILURE;
32693 }
32694
32695 pwdiEXTScanSetBSSIDHotlistReqParams =
32696 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32697 wdiEXTScanSetBSSIDHotlistRspCb =
32698 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32699
32700 /*-----------------------------------------------------------------------
32701 Get message buffer
32702 ! TO DO : proper conversion into the HAL Message Request Format
32703 -----------------------------------------------------------------------*/
32704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32705 pWDICtx,
32706 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32707 sizeof(tHalBssidHotlistSetReq),
32708 &pSendBuffer, &usDataOffset,
32709 &usSendSize))||
32710 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32711 {
32712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32713 "Unable to get send buffer in %s %p %p %p", __func__,
32714 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32715 wdiEXTScanSetBSSIDHotlistRspCb);
32716 WDI_ASSERT(0);
32717 return WDI_STATUS_E_FAILURE;
32718 }
32719 pHalBssidHotlistSetReqParams =
32720 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32721
32722 pHalBssidHotlistSetReqParams->requestId =
32723 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32724
32725 pHalBssidHotlistSetReqParams->sessionId =
32726 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32727
32728 pHalBssidHotlistSetReqParams->numAp =
32729 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32730
32731 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32732
32733 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32734 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32735 WDI_MAC_ADDR_LEN);
32736
32737 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32738 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32739
32740 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32741 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32742
32743 pHalBssidHotlistSetReqParams->ap[i].channel =
32744 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32745
32746 }
32747
32748 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32749 "ReqID %u sessionId %u numAp %u ",
32750 pHalBssidHotlistSetReqParams->requestId,
32751 pHalBssidHotlistSetReqParams->sessionId,
32752 pHalBssidHotlistSetReqParams->numAp);
32753
32754 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32755
32756 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32757 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32758 __func__, __LINE__, i,
32759 pHalBssidHotlistSetReqParams->ap[i].bssid,
32760 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32761 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32762 pHalBssidHotlistSetReqParams->ap[i].channel);
32763
32764 }
32765
32766 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32767
32768
32769 /*-------------------------------------------------------------------------
32770 Send EXTScan Stop Request to HAL
32771 -------------------------------------------------------------------------*/
32772 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32773 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32774 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32775}
32776
32777/**
32778 @brief WDI_EXTScanResetBSSIDHotlistReq
32779
32780 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32781 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32782 of the Req operation received from the device
32783 pUserData: user data will be passed back with the callback
32784
32785 @return SUCCESS or FAIL
32786*/
32787WDI_Status
32788WDI_EXTScanResetBSSIDHotlistReq(
32789 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32790 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32791 void* pUserData)
32792{
32793 WDI_EventInfoType wdiEventData;
32794
32795 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32796 "%s: %d",__func__, __LINE__);
32797 /*------------------------------------------------------------------------
32798 Sanity Check
32799 ------------------------------------------------------------------------*/
32800 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32801 {
32802 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32803 "WDI API call before module is initialized - Fail request");
32804
32805 return WDI_STATUS_E_NOT_ALLOWED;
32806 }
32807
32808 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32809 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32810 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32811 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32812 wdiEventData.pUserData = pUserData;
32813
32814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32815}
32816
32817/**
32818 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32819 Extended Scan reset BSSID hotlist Request to FW
32820
32821 @param pWDICtx : wdi context
32822 pEventData : indication data
32823
32824 @see
32825 @return none
32826*/
32827WDI_Status
32828WDI_ProcessEXTScanResetBSSIDHotlistReq
32829(
32830 WDI_ControlBlockType* pWDICtx,
32831 WDI_EventInfoType* pEventData
32832)
32833{
32834 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32835 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32836 wpt_uint8* pSendBuffer = NULL;
32837 wpt_uint16 usSendSize = 0;
32838 wpt_uint16 usDataOffset = 0;
32839 tpHalHotlistResetReq pHalHotlistResetReqParams;
32840
32841 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32842 "%s: %d",__func__, __LINE__);
32843
32844 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32845 ( NULL == pEventData->pCBfnc ))
32846 {
32847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32848 "%s: Invalid parameters", __func__);
32849 WDI_ASSERT(0);
32850 return WDI_STATUS_E_FAILURE;
32851 }
32852
32853 pwdiEXTScanResetBSSIDHotlistReqParams =
32854 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
32855 wdiEXTScanResetBSSIDHotlistRspCb =
32856 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
32857
32858 /*-----------------------------------------------------------------------
32859 Get message buffer
32860 ! TO DO : proper conversion into the HAL Message Request Format
32861 -----------------------------------------------------------------------*/
32862 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32863 pWDICtx,
32864 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
32865 sizeof(tHalHotlistResetReq),
32866 &pSendBuffer, &usDataOffset,
32867 &usSendSize))||
32868 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
32869 {
32870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32871 "Unable to get send buffer in %s %p %p %p", __func__,
32872 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
32873 wdiEXTScanResetBSSIDHotlistRspCb);
32874 WDI_ASSERT(0);
32875 return WDI_STATUS_E_FAILURE;
32876 }
32877 pHalHotlistResetReqParams =
32878 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
32879
32880 pHalHotlistResetReqParams->requestId =
32881 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
32882
32883 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32884
32885 /*-------------------------------------------------------------------------
32886 Send EXTScan Stop Request to HAL
32887 -------------------------------------------------------------------------*/
32888 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32889 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
32890 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
32891}
32892
32893/**
32894 @brief WDI_EXTScanSetSignfRSSIChangeReq
32895
32896 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
32897 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
32898 of the Req operation received from the device
32899 pUserData: user data will be passed back with the callback
32900
32901 @return SUCCESS or FAIL
32902*/
32903WDI_Status
32904WDI_EXTScanSetSignfRSSIChangeReq(
32905 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
32906 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
32907 void* pUserData)
32908{
32909 WDI_EventInfoType wdiEventData;
32910
32911 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32912 "%s: %d ",__func__, __LINE__);
32913 /*------------------------------------------------------------------------
32914 Sanity Check
32915 ------------------------------------------------------------------------*/
32916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32917 {
32918 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32919 "WDI API call before module is initialized - Fail request");
32920
32921 return WDI_STATUS_E_NOT_ALLOWED;
32922 }
32923
32924 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
32925 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
32926 wdiEventData.uEventDataSize =
32927 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
32928 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
32929 wdiEventData.pUserData = pUserData;
32930
32931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32932}
32933
32934/**
32935 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
32936 Extended Scan set Significant RSSI change Request to FW
32937
32938 @param pWDICtx : wdi context
32939 pEventData : indication data
32940
32941 @see
32942 @return none
32943*/
32944WDI_Status
32945WDI_ProcessEXTScanSetSignifRSSIChangeReq
32946(
32947 WDI_ControlBlockType* pWDICtx,
32948 WDI_EventInfoType* pEventData
32949)
32950{
32951 WDI_EXTScanSetSignfRSSIChangeReqParams*
32952 pwdiEXTScanSetSignfRSSIChangeReqParams;
32953 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32954 wpt_uint8* pSendBuffer = NULL;
32955 wpt_uint16 usSendSize = 0;
32956 wpt_uint16 usDataOffset = 0;
32957 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
32958 int i;
32959
32960 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32961 "%s: %d Enter",__func__, __LINE__);
32962
32963 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32964 ( NULL == pEventData->pCBfnc ))
32965 {
32966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32967 "%s: Invalid parameters", __func__);
32968 WDI_ASSERT(0);
32969 return WDI_STATUS_E_FAILURE;
32970 }
32971
32972 pwdiEXTScanSetSignfRSSIChangeReqParams =
32973 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
32974 wdiEXTScanSetSignfRSSIChangeRspCb =
32975 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32976
32977 /*-----------------------------------------------------------------------
32978 Get message buffer
32979 ! TO DO : proper conversion into the HAL Message Request Format
32980 -----------------------------------------------------------------------*/
32981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32982 pWDICtx,
32983 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
32984 sizeof(tHalSigRssiSetReq),
32985 &pSendBuffer, &usDataOffset,
32986 &usSendSize))||
32987 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
32988 {
32989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32990 "Unable to get send buffer in %s %p %p %p", __func__,
32991 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
32992 wdiEXTScanSetSignfRSSIChangeRspCb);
32993 WDI_ASSERT(0);
32994 return WDI_STATUS_E_FAILURE;
32995 }
32996
32997 pHalSigRssiSetReqParams =
32998 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
32999
33000 pHalSigRssiSetReqParams->requestId =
33001 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33002 pHalSigRssiSetReqParams->sessionId =
33003 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33004 pHalSigRssiSetReqParams->rssiSampleSize =
33005 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33006 pHalSigRssiSetReqParams->lostApSampleSize =
33007 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33008 pHalSigRssiSetReqParams->minBreaching =
33009 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33010 pHalSigRssiSetReqParams->numAp =
33011 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33012
33013
33014 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33015
33016 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33017 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33018 WDI_MAC_ADDR_LEN);
33019
33020 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33021 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33022
33023 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33024 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33025
33026 pHalSigRssiSetReqParams->ap[i].channel =
33027 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33028
33029 }
33030
33031
33032 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33033 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33034 " minBreaching %u numAp %u ",
33035 pHalSigRssiSetReqParams->requestId,
33036 pHalSigRssiSetReqParams->sessionId,
33037 pHalSigRssiSetReqParams->rssiSampleSize,
33038 pHalSigRssiSetReqParams->lostApSampleSize,
33039 pHalSigRssiSetReqParams->minBreaching,
33040 pHalSigRssiSetReqParams->numAp);
33041
33042 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33043
33044 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33045 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33046 i,
33047 pHalSigRssiSetReqParams->ap[i].bssid,
33048 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33049 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33050 pHalSigRssiSetReqParams->ap[i].channel);
33051
33052 }
33053
33054 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33055
33056
33057 /*-------------------------------------------------------------------------
33058 Send EXTScan Stop Request to HAL
33059 -------------------------------------------------------------------------*/
33060 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33061 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33062 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33063}
33064
33065/**
33066 @brief WDI_EXTScanResetSignfRSSIChangeReq
33067
33068 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33069 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33070 of the Req operation received from the device
33071 pUserData: user data will be passed back with the callback
33072
33073 @return SUCCESS or FAIL
33074*/
33075WDI_Status
33076WDI_EXTScanResetSignfRSSIChangeReq(
33077 WDI_EXTScanResetSignfRSSIChangeReqParams*
33078 pwdiEXTScanResetSignfRSSIChangeReqParams,
33079 WDI_EXTScanResetSignfRSSIChangeRspCb
33080 wdiEXTScanResetSignfRSSIChangeRspCb,
33081 void* pUserData)
33082{
33083 WDI_EventInfoType wdiEventData;
33084
33085 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33086 "%s: %d ",__func__, __LINE__);
33087 /*------------------------------------------------------------------------
33088 Sanity Check
33089 ------------------------------------------------------------------------*/
33090 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33091 {
33092 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33093 "WDI API call before module is initialized - Fail request");
33094
33095 return WDI_STATUS_E_NOT_ALLOWED;
33096 }
33097
33098 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33099 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33100 wdiEventData.uEventDataSize =
33101 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33102 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33103 wdiEventData.pUserData = pUserData;
33104
33105 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33106}
33107
33108/**
33109 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33110 Extended Scana reset Significant RSSI change Request to FW
33111
33112 @param pWDICtx : wdi context
33113 pEventData : indication data
33114
33115 @see
33116 @return none
33117*/
33118WDI_Status
33119WDI_ProcessEXTScanResetSignfRSSIChangeReq
33120(
33121 WDI_ControlBlockType* pWDICtx,
33122 WDI_EventInfoType* pEventData
33123)
33124{
33125 WDI_EXTScanResetSignfRSSIChangeReqParams*
33126 pwdiEXTScanResetSignfRSSIChangeReqParams;
33127 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33128 wpt_uint8* pSendBuffer = NULL;
33129 wpt_uint16 usSendSize = 0;
33130 wpt_uint16 usDataOffset = 0;
33131 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33132
33133 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33134 "%s: %d ",__func__, __LINE__);
33135
33136 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33137 ( NULL == pEventData->pCBfnc ))
33138 {
33139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33140 "%s: Invalid parameters", __func__);
33141 WDI_ASSERT(0);
33142 return WDI_STATUS_E_FAILURE;
33143 }
33144
33145 pwdiEXTScanResetSignfRSSIChangeReqParams =
33146 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33147 wdiEXTScanResetSignfRSSIChangeRspCb =
33148 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33149
33150 /*-----------------------------------------------------------------------
33151 Get message buffer
33152 ! TO DO : proper conversion into the HAL Message Request Format
33153 -----------------------------------------------------------------------*/
33154 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33155 pWDICtx,
33156 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33157 sizeof(tHalSigRssiResetReq),
33158 &pSendBuffer, &usDataOffset,
33159 &usSendSize))||
33160 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33161 {
33162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33163 "Unable to get send buffer in %s %p %p %p", __func__,
33164 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33165 wdiEXTScanResetSignfRSSIChangeRspCb);
33166 WDI_ASSERT(0);
33167 return WDI_STATUS_E_FAILURE;
33168 }
33169 pHalSigRssiResetReqParams =
33170 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33171
33172 pHalSigRssiResetReqParams->requestId =
33173 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33174
33175 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33176
33177
33178 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33179 wdiEXTScanResetSignfRSSIChangeRspCb,
33180 pEventData->pUserData,
33181 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33182}
33183
33184/**
33185 @brief Process Extended Scan Start Rsp function (called when a response
33186 is being received over the bus from HAL)
33187
33188 @param pWDICtx: pointer to the WLAN DAL context
33189 pEventData: pointer to the event information structure
33190
33191 @see
33192 @return Result of the function call
33193*/
33194WDI_Status
33195WDI_ProcessEXTScanStartRsp
33196(
33197 WDI_ControlBlockType* pWDICtx,
33198 WDI_EventInfoType* pEventData
33199)
33200{
33201 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33202
33203 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33204 "%s: %d",__func__, __LINE__);
33205 /*-------------------------------------------------------------------------
33206 Sanity check
33207 -------------------------------------------------------------------------*/
33208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33209 ( NULL == pEventData->pEventData))
33210 {
33211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33212 "%s: Invalid parameters", __func__);
33213 WDI_ASSERT(0);
33214 return WDI_STATUS_E_FAILURE;
33215 }
33216
33217 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33218 if ( NULL == wdiEXTScanStartRspCb)
33219 {
33220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33221 "%s: Callback function Invalid", __func__);
33222 WDI_ASSERT(0);
33223 return WDI_STATUS_E_FAILURE;
33224 }
33225
33226 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33227
33228 return WDI_STATUS_SUCCESS;
33229}
33230
33231
33232/**
33233 @brief Process Extended Scan Stop Rsp function (called when a response
33234 is being received over the bus from HAL)
33235
33236 @param pWDICtx: pointer to the WLAN DAL context
33237 pEventData: pointer to the event information structure
33238
33239 @see
33240 @return Result of the function call
33241*/
33242WDI_Status
33243WDI_ProcessEXTScanStopRsp
33244(
33245 WDI_ControlBlockType* pWDICtx,
33246 WDI_EventInfoType* pEventData
33247)
33248{
33249 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33250
33251 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33252 "%s: %d",__func__, __LINE__);
33253
33254
33255 /*-------------------------------------------------------------------------
33256 Sanity check
33257 -------------------------------------------------------------------------*/
33258 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33259 ( NULL == pEventData->pEventData))
33260 {
33261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33262 "%s: Invalid parameters", __func__);
33263 WDI_ASSERT(0);
33264 return WDI_STATUS_E_FAILURE;
33265 }
33266
33267 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33268 if ( NULL == wdiEXTScanStopRspCb)
33269 {
33270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33271 "%s: Callback function Invalid", __func__);
33272 WDI_ASSERT(0);
33273 return WDI_STATUS_E_FAILURE;
33274 }
33275
33276 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33277
33278 return WDI_STATUS_SUCCESS;
33279}
33280
33281/**
33282 @brief Process Extended Scan Get Cached Rsp function (called when a response
33283 is being received over the bus from HAL)
33284
33285 @param pWDICtx: pointer to the WLAN DAL context
33286 pEventData: pointer to the event information structure
33287
33288 @see
33289 @return Result of the function call
33290*/
33291WDI_Status
33292WDI_ProcessEXTScanGetCachedResultsRsp
33293(
33294 WDI_ControlBlockType* pWDICtx,
33295 WDI_EventInfoType* pEventData
33296)
33297{
33298 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33299
33300 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33301 "%s: %d Enter",__func__, __LINE__);
33302
33303
33304 /*-------------------------------------------------------------------------
33305 Sanity check
33306 -------------------------------------------------------------------------*/
33307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33308 ( NULL == pEventData->pEventData))
33309 {
33310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33311 "%s: Invalid parameters", __func__);
33312 WDI_ASSERT(0);
33313 return WDI_STATUS_E_FAILURE;
33314 }
33315
33316 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33317 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33318 {
33319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33320 "%s: Callback function Invalid", __func__);
33321 WDI_ASSERT(0);
33322 return WDI_STATUS_E_FAILURE;
33323 }
33324
33325 wdiEXTScanGetCachedResultsRspCb(
33326 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33327
33328 return WDI_STATUS_SUCCESS;
33329}
33330
33331/**
33332 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33333 is being received over the bus from HAL)
33334
33335 @param pWDICtx: pointer to the WLAN DAL context
33336 pEventData: pointer to the event information structure
33337
33338 @see
33339 @return Result of the function call
33340*/
33341WDI_Status
33342WDI_ProcessEXTScanGetCapabilitiesRsp
33343(
33344 WDI_ControlBlockType* pWDICtx,
33345 WDI_EventInfoType* pEventData
33346)
33347{
33348 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33349
33350 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33351 "%s: %d ",__func__, __LINE__);
33352
33353
33354 /*-------------------------------------------------------------------------
33355 Sanity check
33356 -------------------------------------------------------------------------*/
33357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33358 ( NULL == pEventData->pEventData))
33359 {
33360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33361 "%s: Invalid parameters", __func__);
33362 WDI_ASSERT(0);
33363 return WDI_STATUS_E_FAILURE;
33364 }
33365
33366 wdiEXTScanGetCapabilitiesRspCb =
33367 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33368 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33369 {
33370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33371 "%s: Callback function Invalid", __func__);
33372 WDI_ASSERT(0);
33373 return WDI_STATUS_E_FAILURE;
33374 }
33375
33376 wdiEXTScanGetCapabilitiesRspCb(
33377 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33378
33379 return WDI_STATUS_SUCCESS;
33380}
33381
33382/**
33383 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33384 response is being received over the bus from HAL)
33385
33386 @param pWDICtx: pointer to the WLAN DAL context
33387 pEventData: pointer to the event information structure
33388
33389 @see
33390 @return Result of the function call
33391*/
33392WDI_Status
33393WDI_ProcessEXTScanSetHotlistBSSIDRsp
33394(
33395 WDI_ControlBlockType* pWDICtx,
33396 WDI_EventInfoType* pEventData
33397)
33398{
33399 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33400
33401 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33402 "%s: %d ",__func__, __LINE__);
33403
33404
33405 /*-------------------------------------------------------------------------
33406 Sanity check
33407 -------------------------------------------------------------------------*/
33408 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33409 ( NULL == pEventData->pEventData))
33410 {
33411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33412 "%s: Invalid parameters", __func__);
33413 WDI_ASSERT(0);
33414 return WDI_STATUS_E_FAILURE;
33415 }
33416
33417 wdiEXTScanSetBSSIDHotlistRspCb =
33418 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33419 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33420 {
33421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33422 "%s: Callback function Invalid", __func__);
33423 WDI_ASSERT(0);
33424 return WDI_STATUS_E_FAILURE;
33425 }
33426
33427 wdiEXTScanSetBSSIDHotlistRspCb(
33428 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33429
33430 return WDI_STATUS_SUCCESS;
33431}
33432
33433/**
33434 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33435 when a response is being received over the bus from HAL)
33436
33437 @param pWDICtx: pointer to the WLAN DAL context
33438 pEventData: pointer to the event information structure
33439
33440 @see
33441 @return Result of the function call
33442*/
33443WDI_Status
33444WDI_ProcessEXTScanResetHotlistBSSIDRsp
33445(
33446 WDI_ControlBlockType* pWDICtx,
33447 WDI_EventInfoType* pEventData
33448)
33449{
33450 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33451
33452 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33453 "%s: %d ",__func__, __LINE__);
33454
33455
33456 /*-------------------------------------------------------------------------
33457 Sanity check
33458 -------------------------------------------------------------------------*/
33459 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33460 ( NULL == pEventData->pEventData))
33461 {
33462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33463 "%s: Invalid parameters", __func__);
33464 WDI_ASSERT(0);
33465 return WDI_STATUS_E_FAILURE;
33466 }
33467
33468 wdiEXTScanResetBSSIDHotlistRspCb =
33469 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33470 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
33471 {
33472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33473 "%s: Callback function Invalid", __func__);
33474 WDI_ASSERT(0);
33475 return WDI_STATUS_E_FAILURE;
33476 }
33477
33478 wdiEXTScanResetBSSIDHotlistRspCb(
33479 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33480
33481 return WDI_STATUS_SUCCESS;
33482}
33483
33484/**
33485 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
33486 when a response is being received over the bus from HAL)
33487
33488 @param pWDICtx: pointer to the WLAN DAL context
33489 pEventData: pointer to the event information structure
33490
33491 @see
33492 @return Result of the function call
33493*/
33494WDI_Status
33495WDI_ProcessEXTScanSetSignfRSSIChangeRsp
33496(
33497 WDI_ControlBlockType* pWDICtx,
33498 WDI_EventInfoType* pEventData
33499)
33500{
33501 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33502
33503 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33504 "%s: %d",__func__, __LINE__);
33505
33506
33507 /*-------------------------------------------------------------------------
33508 Sanity check
33509 -------------------------------------------------------------------------*/
33510 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33511 ( NULL == pEventData->pEventData))
33512 {
33513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33514 "%s: Invalid parameters", __func__);
33515 WDI_ASSERT(0);
33516 return WDI_STATUS_E_FAILURE;
33517 }
33518
33519 wdiEXTScanSetSignfRSSIChangeRspCb =
33520 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33521 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
33522 {
33523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33524 "%s: Callback function Invalid", __func__);
33525 WDI_ASSERT(0);
33526 return WDI_STATUS_E_FAILURE;
33527 }
33528
33529 wdiEXTScanSetSignfRSSIChangeRspCb(
33530 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33531
33532 return WDI_STATUS_SUCCESS;
33533}
33534
33535/**
33536 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
33537 (called when a response is being received over the bus from HAL)
33538
33539 @param pWDICtx: pointer to the WLAN DAL context
33540 pEventData: pointer to the event information structure
33541
33542 @see
33543 @return Result of the function call
33544*/
33545WDI_Status
33546WDI_ProcessEXTScanResetSignfRSSIChangeRsp
33547(
33548 WDI_ControlBlockType* pWDICtx,
33549 WDI_EventInfoType* pEventData
33550)
33551{
33552 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33553
33554 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33555 "%s: %d Enter",__func__, __LINE__);
33556
33557
33558 /*-------------------------------------------------------------------------
33559 Sanity check
33560 -------------------------------------------------------------------------*/
33561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33562 ( NULL == pEventData->pEventData))
33563 {
33564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33565 "%s: Invalid parameters", __func__);
33566 WDI_ASSERT(0);
33567 return WDI_STATUS_E_FAILURE;
33568 }
33569
33570 wdiEXTScanResetSignfRSSIChangeRspCb =
33571 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33572 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
33573 {
33574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33575 "%s: Callback function Invalid", __func__);
33576 WDI_ASSERT(0);
33577 return WDI_STATUS_E_FAILURE;
33578 }
33579
33580 wdiEXTScanResetSignfRSSIChangeRspCb(
33581 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33582
33583 return WDI_STATUS_SUCCESS;
33584}
33585#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053033586
33587/**
33588 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
33589
33590 @param None
33591
33592 @see
33593
33594 @return Status of the request
33595*/
33596WDI_Status
33597WDI_SetSpoofMacAddrReq
33598(
33599 WDI_SpoofMacAddrInfoType* pWdiReq,
33600 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
33601 void* pUserData)
33602{
33603 WDI_EventInfoType wdiEventData;
33604
33605 /*-------------------------------------------------------------------------
33606 Sanity Check
33607 ------------------------------------------------------------------------*/
33608 if (eWLAN_PAL_FALSE == gWDIInitialized)
33609 {
33610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33611 "WDI API call before module is initialized - Fail request!");
33612
33613 return WDI_STATUS_E_NOT_ALLOWED;
33614 }
33615
33616 /*-------------------------------------------------------------------------
33617 Fill in Event data and post to the Main FSM
33618 ------------------------------------------------------------------------*/
33619 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
33620 wdiEventData.pEventData = pWdiReq;
33621 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
33622 wdiEventData.pCBfnc = spoofMacAddrRspCb;
33623 wdiEventData.pUserData = pUserData;
33624
33625 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33626}
33627
33628/**
33629 @brief Process SpoofMacAddr Request
33630
33631 @param pWDICtx: pointer to the WLAN DAL context
33632 pEventData: pointer to the event information structure
33633
33634 @see
33635 @return Result of the function call
33636*/
33637WDI_Status
33638WDI_ProcessSpoofMacAddrReq
33639(
33640 WDI_ControlBlockType* pWDICtx,
33641 WDI_EventInfoType* pEventData
33642)
33643{
33644 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
33645 wpt_uint8* pSendBuffer = NULL;
33646 wpt_uint16 usDataOffset = 0;
33647 wpt_uint16 usSendSize = 0;
33648 WDI_Status wdiStatus;
33649 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
33650 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
33651
33652
33653 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33654 "%s: %d Enter",__func__, __LINE__);
33655
33656 /*-------------------------------------------------------------------------
33657 Sanity check
33658 -------------------------------------------------------------------------*/
33659 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33660 ( NULL == pEventData->pEventData))
33661 {
33662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33663 "%s: Invalid parameters", __func__);
33664 WDI_ASSERT(0);
33665 return WDI_STATUS_E_FAILURE;
33666 }
33667 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
33668
33669 /*-----------------------------------------------------------------------
33670 Get message buffer
33671 -----------------------------------------------------------------------*/
33672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33673 WDI_SPOOF_MAC_ADDR_REQ,
33674 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
33675 &pSendBuffer, &usDataOffset, &usSendSize))||
33676 (usSendSize < (usDataOffset +
33677 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
33678 {
33679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33680 "Unable to get send buffer in Process Spoof Mac Addr Req");
33681 WDI_ASSERT(0);
33682 return WDI_STATUS_E_FAILURE;
33683 }
33684
33685 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
33686 wdiSpoofMacAddr->macAddr,
33687 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
33688
33689 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
33690
33691 wpalMemoryCopy( pSendBuffer+usDataOffset,
33692 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
33693 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
33694
33695 /*-------------------------------------------------------------------------
33696 Send Suspend Request to HAL
33697 -------------------------------------------------------------------------*/
33698 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33699 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
33700
33701 return wdiStatus;
33702}
33703
33704/**
33705 @brief Process Spoof Mac Address Rsp function
33706 (called when a response is being received over the bus from HAL)
33707
33708 @param pWDICtx: pointer to the WLAN DAL context
33709 pEventData: pointer to the event information structure
33710
33711 @see
33712 @return Result of the function call
33713*/
33714WDI_Status
33715WDI_ProcessSpoofMacAddrRsp
33716(
33717 WDI_ControlBlockType* pWDICtx,
33718 WDI_EventInfoType* pEventData
33719)
33720{
33721 tMacSpoofedScanResp halRsp;
33722 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
33723 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
33724
33725 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33726 "%s: %d Enter",__func__, __LINE__);
33727
33728 /*-------------------------------------------------------------------------
33729 Sanity check
33730 -------------------------------------------------------------------------*/
33731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33732 ( NULL == pEventData->pEventData))
33733 {
33734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33735 "%s: Invalid parameters", __func__);
33736 WDI_ASSERT(0);
33737 return WDI_STATUS_E_FAILURE;
33738 }
33739 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
33740
33741 /*-------------------------------------------------------------------------
33742 Extract response and send it to UMAC
33743 -------------------------------------------------------------------------*/
33744 wpalMemoryCopy( &halRsp,
33745 pEventData->pEventData, sizeof(halRsp));
33746
33747 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33748
33749 /*Notify UMAC*/
33750 wdiSpoofMacAddrRspCb(
33751 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
33752
33753 return WDI_STATUS_SUCCESS;
33754}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053033755
33756/**
33757 @brief WDI_EncryptMsgReq
33758
33759 @param pwdiEncryptMsgParams: Req parameter for the FW
33760 wdiEncryptMsgCbRsp: callback for passing back the response
33761 of the Req operation received from the device
33762 pUserData: user data will be passed back with the callback
33763
33764 @return SUCCESS or FAIL
33765*/
33766WDI_Status
33767WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
33768 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
33769 void* pUserData)
33770{
33771 WDI_EventInfoType wdiEventData;
33772
33773 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33774 "%s: %d Enter" ,__func__, __LINE__);
33775 /*------------------------------------------------------------------------
33776 Sanity Check
33777 ------------------------------------------------------------------------*/
33778 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33779 {
33780 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33781 "WDI API call before module is initialized - Fail request");
33782
33783 return WDI_STATUS_E_NOT_ALLOWED;
33784 }
33785
33786 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
33787 wdiEventData.pEventData = pwdiEncryptMsgParams;
33788 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
33789 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
33790 wdiEventData.pUserData = pUserData;
33791
33792 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33793}
33794
33795/*
33796 * FUNCTION: WDI_ProcessEncryptMsgReq
33797 * Request to WDI to encrypt the given message.
33798 *
33799 * @param pWDICtx: pointer to the WLAN DAL context
33800 * pEventData: pointer to the event information structure
33801 *
33802 * @return Result of the function call
33803 */
33804
33805WDI_Status
33806WDI_ProcessEncryptMsgReq
33807(
33808 WDI_ControlBlockType* pWDICtx,
33809 WDI_EventInfoType* pEventData
33810)
33811{
33812 wpt_uint8* pSendBuffer = NULL;
33813 wpt_uint16 usDataOffset = 0;
33814 wpt_uint16 usSendSize = 0;
33815 WDI_EncryptMsgRspCb* wdiEncMsgCb;
33816 tSetEncryptedDataParams *pHalEncryptDataReq;
33817 wpt_pkt80211 *pkt = NULL;
33818
33819 /*-------------------------------------------------------------------------
33820 Sanity check
33821 -------------------------------------------------------------------------*/
33822 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33823 ( NULL == pEventData->pCBfnc ) )
33824 {
33825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33826 "%s: Invalid parameters", __func__);
33827 WDI_ASSERT(0);
33828 return WDI_STATUS_E_FAILURE;
33829 }
33830
33831 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
33832
33833 /*-----------------------------------------------------------------------
33834 Get message buffer
33835 -----------------------------------------------------------------------*/
33836 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33837 pWDICtx, WDI_ENCRYPT_MSG_REQ,
33838 sizeof(tSetEncryptedDataReqMsg),
33839 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33840 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
33841 {
33842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33843 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
33844 pEventData);
33845 WDI_ASSERT(0);
33846 return WDI_STATUS_E_FAILURE;
33847 }
33848
33849 pWDICtx->wdiReqStatusCB = NULL;
33850 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33851 pkt = (wpt_pkt80211 *)pEventData->pEventData;
33852
33853 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
33854 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
33855
33856 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
33857
33858 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
33859 pkt->encParams.keyParams.key[0].keyId;
33860
33861 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
33862 &pkt->encParams.keyParams.key[0].key[0], 16);
33863
33864 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
33865
33866 pHalEncryptDataReq->data.length = pkt->data.length;
33867 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
33868
33869 /*-------------------------------------------------------------------------
33870 Send Get STA Request to HAL
33871 -------------------------------------------------------------------------*/
33872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
33873 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
33874}
33875
33876/*
33877 * FUNCTION: WDI_ProcessEncryptMsgRsp
33878 * Receives the encrypted message from the firmware
33879 * @param pWDICtx: pointer to the WLAN DAL context
33880 * pEventData: pointer to the event information structure
33881 *
33882 * @return Result of the function call
33883 */
33884WDI_Status
33885WDI_ProcessEncryptMsgRsp
33886(
33887 WDI_ControlBlockType* pWDICtx,
33888 WDI_EventInfoType* pEventData
33889)
33890{
33891 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
33892 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
33893
33894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33895 "In %s",__func__);
33896
33897 /*-------------------------------------------------------------------------
33898 Sanity check
33899 -------------------------------------------------------------------------*/
33900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33901 ( NULL == pEventData->pEventData))
33902 {
33903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33904 "%s: Invalid parameters", __func__);
33905 WDI_ASSERT(0);
33906 return WDI_STATUS_E_FAILURE;
33907 }
33908
33909 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
33910
33911 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
33912
33913 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
33914 pEventData->pEventData,
33915 pWDICtx->pRspCBUserData);
33916 return WDI_STATUS_SUCCESS;
33917}